使用node開發命令行工具,構建多頁面

使用node開發命令行工具,構建多頁面

項目src目錄

enter image description here

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])

enter image description here

當我須要同時建立不少個 page 的時候,只接收一個參數就不能知足需求了,因此咱們須要能夠同時接收多個參數,yargs 模塊能夠解決如何處理命令行參數,在使用前須要安裝(也能夠繼續使用 process.argv 獲取參數)
Like thisnpm

npm i yargs --save
var argv = require('yargs').argv
console.log(argv.name)

img

argv 對象有一個下劃線(_)屬性, 能夠獲取非鏈接此開頭的參數,返回一個數組
Like this數組

var argv = require('yargs').argv
console.log(argv._)

img4

因此咱們就使用 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')
})

最終效果

Alt text

###參考與文後閱讀
阮一峯 Node.js 命令行程序開發教程
Node.js 中文網spa

相關文章
相關標籤/搜索