前言
yeoman作为一款最老牌最通用的一款脚手架工具,他有更多值得我们借鉴和学习的地方,它是一款用于创造现代化web应用的脚手架工具,yeoman更像是一个脚手架运行平台,我们可以通过yeoman搭配不同的genrator去创建任何类型的项目,我们还可以创建自己的generator来定制自己的脚手架,yeoman的优点也正式它的缺点,在很多基于框架开发的眼中,它过于通用,不够专注,我们前端开发更愿意使用像vue-cli这样的比较专注的脚手架工具。
yeoman基本使用
在全局范围安装yo
npm install yo --global 或者 yarn global add yo
安装对应的generator
npm install generator-node --global 或者 yarn global add generator-node
在自己的项目根目录下面通过yo运行generator,运行generator时是运行的
generator-
后面的名字yo node
安装过程中会出现下面几个选项:
- Module Name —- 代表项目的名字
- The name above already exists on npm, choose another? —- 代表此模块在npm上已经存在是否要选择另外一个,选择yes会出现让你重新输入项目的名字-第三行,选择no直接进入下一步
- Description —- 项目描述
- Project homepage url —- 项目主页
- Author’s Name —-项目作者的名字
- Author’s Email —- 项目作者的邮箱
- Author’s Homepage —- 项目作者的主页
- Package keywords (comma to split) —- 模块的关键词
- Send coverage reports to coveralls —- 是否发送代码覆盖率报告在平台上
- Enter Node versions (comma separated) —- 输入这个模块的支持版本 如果不输入默认最新版本
- GitHub username or organization —- github用户名
- Which license do you want to use —- 项目使用许可证
yeoman使用步骤总结
- 明确你的需求
- 找到合适的generator
- 全局范围安装这个generator
- 通过yo运行对应的generator
- 通过命令行交互填写选项
-
自定义generator
generator本质上就是一个npm模块,yeoman的generator必须是以generator-name的格式,如果不采用这种格式,yeoman后续就无法找到所定义的generator
步骤
首先创建一个项目根目录,并切换到这个目录
- 执行
yarn init
命令创建package.json文件
- 执行
yarn add yeoman-generator
安装这个模块,它提供了生成器的一个基类,这个基类中提供了一些工具函数,让我们创建生成器的时候更加便捷
- 在我们的项目根目录下面创建
generator/app/index.js
,在index.js中写入以下代码:
这样以来,我们的简单的generator就完成了,
- 通过
yarn link
方式把这个模块链接到全局范围,使之成为全局包,使得yeoman在工作的时候可以找到这个包 - 然后我们就可以执行
yo sample
来生成我们的generator了
执行完命令会生成一个temp.txt文件,这个里面就是刚才我们写入的内容
- 根据模板创建文件,我们创建一个templates文件夹,文件夹下创建一个文件,文件里写点内容
- 我们在生成文件中就可以不用使用fs.writer方法向文件中写入内容了
- 再次运行
yo sample
,生成了我们创建的foo.txt文件和里面的内容
- 用户输入输出,创建prompting
Vue generator 案例
- 按照上面的前四步操作生成一个
generators/app/index.js
入口文件
writing
方法中用于批量生成我们所需要的项目结构
- 我们创建一个
templates
文件夹,把我们所需要的项目结构copy到里面
将模板中一些需要变化的地方,改写成动态写入的形式(ejs模板标记)
- 在
writing
中对我们需要的项目结构进行遍历,我们先把项目的相对路径用数组的方式展示出来
遍历的方式写入:
- 通过命令行
yarn link
将此模块作为一个全局模块 link到全局
- 之后在新建一个文件夹,执行
yo zce-vue
,刚才generotor-
后面的那个名字,就可以生成我们项目所需要的脚手架拉