背景:当我们每次要创建一个新的vue项目时都得使用vue create创建最基础的模板然后从头开始配置,得创建常用的目录结构、配置vue.config.js、对网络请求axios进行安装并二次封装、配置router等。呜呜呜有没有专属于懒人的方法让我们不用每次创建一个新的项目时都重复这些活呢!!!
哦天哪!!为什么我们不搭个脚手架呢!!把这些东西都一次性配置好,之后我们只要一行命令就可以搞定!
开摆,不,开干!
首先我们得明确我们的脚手架都需要提供哪些功能。
http://localhost:8080/、自动启动项目好的下面开始撸代码吧。
首先npm initi -y 初始化包,然后在package.json中配置包名 “name”: “ckt”,和指令入口文件
"bin": {
"ckt": "index.js"
}
表示指令为ckt时执行index.js文件。配置好后npm link把bin和环境变量进行链接,把ckt配置到环境变量。
目录结构:

配置index.js
#!/usr/bin/env node
//一个指令,读为shebang/hashbang。但代码执行到这个文件时,会根据#!后面定义的环境执行代码。
//#!后面写的是node代码,代码相对固定。 /usr/bin/env node表示在当前电脑环境中找到node,并用node来执行文件
const program = require('commander');
const helpOptions = require('./lib/core/help');
const createCommands = require('./lib/core/create');
const log = require('./lib/utils/log');
// 定义显示模块的版本号
// program.version('1.0.1') //写死的,每次package.json中修改这里都需要同步
program.version(require('./package.json').version)
program.version(require('./package.json').version, '-v,--version') //不加'-v,--version'则只有使用--version或者-V才可以访问到版本号,使用此后使用-v也可以访问到。ps:上面一句不加会覆盖-V
// 给help增加其他选项
helpOptions(); //--help是commander自带的,也可以自己配置
// 创建命令
createCommands();
// 解析终端指令
program.parse(process.argv); //必须,把参数交过来进行解析
help.js中配置可选参数:
const program = require('commander');
// 增加自己的options(可选参数)
const helpOptions = () => {
program.option('-s --src ' , 'a source folder');
program.option('-d --dest ' , 'a destination folder, 例如: -d src/pages, 错误/src/pages');
program.option('-f --framework ' , 'your framework name');
//除了option,也可以使用on监听help.执行顺序在option后面
program.on('--help', function() {
console.log("");
console.log("usage");
})
// console.log(program.dest)
}
module.exports = helpOptions;
create.js中配置命令:
const program = require('commander');
const {
createProject,
addComponent,
addPage,
addStore
} = require('./actions');
//<>表示必选参数, []表示可选参数, ...表可以多个
//.command为commander里面带有的,用于创建指令,description描述指令的功能,action传入执行指令时的回调函数