第三方库
- commander.js,可以自动的解析命令和参数,用于处理用户输入的命令。
- download-git-repo,下载并提取 git 仓库,用于下载项目模板。
- Inquirer.js,通用的命令行用户界面集合,用于和用户进行交互。
- handlebars.js,模板引擎,将用户提交的信息动态填充到文件中。
- ora,下载过程久的话,可以用于显示下载中的动画效果。
- chalk,可以给终端的字体加上颜色。
- log-symbols,可以在终端上显示出 √ 或 × 等的图标。
首先自己搭好一个demo传到github(或者gitLab都可以)
修改demo得package.json(handlebars语法):
{
"name": "{{name}}",
"version": "1.0.0",
"description": "{{description}}",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "{{author}}",
"license": "ISC"
}
再建一个新的空项目:
npm install commander download-git-repo inquirer handlebars ora chalk log-symbols -S
在package.json加入字段:
"bin": {
"shadownc": "./index.js"//执行文件路径
},
index.js:
//在顶部添加这句:
#!/usr/bin/env node --这种用法是为了防止操作系统用户没有将node装在默认的/usr/bin路径里。当系统看到这一行的时候,
首先会到env设置里查找node的安装路径,再调用对应路径下的解释器程序完成操作。
//download-git-repo踩坑(路径错误导致下载模板失败--git clone status 128)
//从github上下载所需得template 下载地址不是你复制得https://github.com/xxx/xxx.git
//正确写法:
download('github:Shadownc/express-tpl#master', name, {clone: true}, (err) => {
console.log(err ? 'Fail' : 'Success')
})
//还有一种简写:
Shadownc/express-tpl#master
//#master为模板所在的分支
欢迎加群讨论:163958730