view 裏面包含了多個 page,把每個 page 當成一個獨立的組件去開發,因此每個 page 下面都會有 page.html、page.js、page.less 三個文件。那麼問題來了,每次要新建頁面的時候都須要同時新建三個文件(若是新建N個頁面的時候,豈不是...),因此這種重複性的工做仍是交給工具來處理把。恰好 node.js 文件系統就提供了操做文件的功能,因此決定採用 node.js 來開發一個命令行工具!html
但願在命令行上直接輸入文件的 name,而後根據name建立對應的文件,命令行參數可使用 process.argv系統變量獲取
如:node
console.log(process.argv[2])
當我須要同時建立不少個 page 的時候,只接收一個參數就不能知足需求了,因此咱們須要能夠同時接收多個參數,yargs 模塊能夠解決如何處理命令行參數,在使用前須要安裝(也能夠繼續使用 process.argv 獲取參數)
Like thisnpm
npm i yargs --save
var argv = require('yargs').argv console.log(argv.name)
argv 對象有一個下劃線(_)屬性, 能夠獲取非鏈接此開頭的參數,返回一個數組
Like this數組
var argv = require('yargs').argv console.log(argv._)
因此咱們就使用 argv._ 來接收多個命令行參數less
解決了接收參數的問題以後就是建立文件夾了,經過接收到的 nam 來建立對應的 文件夾,可使用 fs 模塊的 mkdir 方法來建立文件夾
Like this異步
var fs = require('fs') fs.mkdir(path, function(err){ if(err) return console.log(err) // -4075 file already exists console.log('create file success') })
建立文件可使用 fs 模塊的 writeFile 方法,該方法會在文件不存在的時候新建一個文件,(接收三個參數:寫入路徑、寫入內容、callback)
Like this工具
// fs.mkdir 方法是異步的 var msg = "console.log('hello janmi')"; fs.mkdir(path, function(err) { if (err) return console.log(err) fs.writeFile(page.js, msg, function(err) { if (err) console.log(err) cosnoe.log('create page.js success') }) fs.writeFile(page.less, '', function(err) { if (err) console.log(err) cosnoe.log('create page.less success') }) fs.writeFile(page.html, '', function(err) { if (err) console.log(err) cosnoe.log('create page.html success') }) })
因爲是用於項目開發的,因此咱們有一套本身的模版,而使用 writeFile 寫如的內容會破環代碼的格式,因此使用 fs-extra 模塊的 copy 方法來拷貝文件內容ui
Like thisthis
npm i fs-extra --save
var fsExtra = require('fs-extra') fsExtra.copy(template.html, page.html, function(err){ if (err) return err console.log('Copy template.html success') })
###參考與文後閱讀
阮一峯 Node.js 命令行程序開發教程
Node.js 中文網spa