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