1. 使用generator
- 必须拥有node,npm,git,然后安装yo
npm install yo -g // yo --version查看版本
npm install generator-webapp -g 或者使用
yo 命令
- 在你想创建项目的位置,创建文件夹
mkdir Yeoman && cd Yeoman
- 再次运行yo命令 选择刚刚安装的generator
或者使用
yo webapp
根据提示去进行功能选择,不同的generator对应的功能也所有不同
- npm run serve 运行
2. 自定义generator
- 创建一个项目目录
在项目目录下 npm init 生成package.json
注意在package.json中:
"name": "generator-yourname",
"keywords": ["yeoman-generator"],
"files": [] (根据directory tree设置)
- 创建你的directory tree
格式为:
├───package.json
└───generators/
├───app/
│ └───index.js
└───router/
└───index.js
此时package.json中 files设置为 ["generators"]
或者
├───package.json
├───app/
│ └───index.js
└───router/
└───index.js
此时package.json中 files设置为 ["app","router"]
- app/index.js中
var Generator = require('yeoman-generator');
module.exports = class extends Generator {
constructor(args, opts) {
super(args, opts);
this.option('babel');
},
method1() {
this.log('method 1 just ran');
}
};
- 运行即可
npm link
运行后会在/usr/local/lib/node_modules中 生成对应你package.json中name的文件夹
- 此时运行yo命令时就会看到刚刚创建的项目
3.16更新
前提在generators/app/templates下放着你供给别人生成的东西
generators/app/templates/package.json.ejs
注意: 该package.json.ejs是在别人生成时的json文件,由于需要根据用户的选择,去动态的修改文件,所以使用了ejs语法。
generators/app/index.js
module.exports = class extends Generator {
constructor(args, opts){
super(args,opts);
this.answers = {};
}
prompting () {
return this.prompt([{
type: 'input',
name: 'name',
message: 'Your project name',
default: this.appname
},{
//input 为输入, confirm为是否,list为选择
}]).then((res)=>{
this.answers.xxx = res.name // 获取用户对相应name的选择/输入
})
}
writing () {
// 进行对文件的判断写入,复制等
this.fs.copy()/copyTpl() // 参数的数量是三个
// 模版路径,目标路径,[传递参数] 这个传递参数就是在模版中用到的参数 参数类型为object 使用时切记末尾为ejs,并且在目标路径是去掉该后缀
}
}
由于在代码逻辑中提问并判断用户是否需要该git以及git commit 的规范
所以引入shelljs 去执行git init / git remote add xx xx 以及安装commit规范的命令
后续有时间会更新如何使用shell 对命令行中输入的参数进行操作