创建 generator(yeoman-generator) 创建 Yeoman 的 generator 需要遵循它的规则。 首先是 generator 命名规则。 此外,你创建的 generator 类需要继承 yeoman-generator。 使用该脚手架会同时需要 Yeoman 与上述咱们刚创建的 yeoman-generator。当然,有一个前提,Yeoman 与这个 generator 都需要全局安装。 要了解更多 yeoman-generator 的开发与使用,可以参考社区里大家写的各类 generator。 目前在 npm 上有超过 8000 个 yeoman-generator,也许就会有你的菜。 文中完成的代码请查看 generator-webpack-kickoff。
3.1 使用方法 你可以通过如下方式使用它: 通过在自己的项目中引用yeoman-generator,使用yeoman的API编写定制的模板文件(注意使用此种方法时,如果希望通过yo来调用生成器,则需要按指定的方式编写 3.2 generator的生命周期 generator的本质是一个继承自yeoman-generator的匿名类,其代码架构如下: const Generator = require('yeoman-generator 使用指定的包管理工具进行依赖安装(支持npm,bower,yarn) } end(){ //结束动作,例如清屏,输出结束信息,say GoodBye等等 } } Yeoman-generator 提供了很多封装好的方法,文档详细且源码注释非常详细,详情可参见【Yeoman-generator官方API】 3.3 generator的调用 本地开发的generator-XXX未经过发布,需要在package.json
每一个包的keyword中必须包含yeoman-generator。files属性要指向项目的模板目录。 第一步是通过npm init或是自己手动创建generator的package.json,项目依赖yeoman-generator。也可以利用generator-generator来初始化。 0.1.0", "description": "", "files": [ "generators" ], "keywords": [ "yeoman-generator " ], "main": "generators/app/index.js", "dependencies": { "yeoman-generator": "^1.0.0 于是第三步就是编辑app/index.js来扩展它: const Generator = require('yeoman-generator'); const path = require('path'
| | └─── vcmrc │ └───index.js └───utils.js 扩展generator 在generator的外层index.js文件里,通过继承yeoman-generator const Generator = require('yeoman-generator'); module.exports = class extends Generator { } Yeoman的运行周期
index.js 也是按照具体的约束,一个简单的示例: var generators = require('yeoman-generator') module.exports = generators.Base.extend
说一下具体步骤: 弹出选择框选择初始化类型:单页面应用,多页面应用 是否初始化REM代码,用于H5开发 单页面应用是否初始化webapp 等等,其他选项 接下来就是复制文件 复制文件需要用到一个工具yeoman-generator commander 命令行工具,必备工具,简化参数解析和帮助信息输出 inquirer 交互式命令行工具,让你可以再命令行中实现可交互输入 semver 版本工具,可以用于提示用户你的命令行支持版本的nodejs yeoman-generator
脚手架的生命周期 在generators/app/index.js中,我们需要编写脚手架的主要逻辑,大概的代码结构是这样的: "use strict"; const Generator = require("yeoman-generator
index.js 也是按照具体的约束,一个简单的示例: var generators = require('yeoman-generator') module.exports = generators.Base.extend
脚手架的原理 generators是yeoman生态系统的积木,通过yo命令运行而为终端用户生产文件,yeoman-generator本质上是一个有着完整项目结构的模板 , yo根据用户选择不同的generator
通常来说,这个文件都满足如图格式: const Generator = require('yeoman-generator'); module.exports = class extends Generator const Generator = require('yeoman-generator'); const chalk = require('chalk'); const yosay = require(
脚手架的原理 generators是yeoman生态系统的积木,通过yo命令运行而为终端用户生产文件,yeoman-generator本质上是一个有着完整项目结构的模板 , yo根据用户选择不同的generator
【重点来了】看似流程蛮多,其实只用一个现成的轮子即可搞定,即 yeoman-generator,它帮我们把这些过程都封装好了,我们只需继承基类,并写几个预设的生命周期函数即可,无脑到令人发指 (细节处理
Grunt、gulp(构建工具)、 Bower、npm --- (包管理工具)等 如何安装 npm install -g yo yeoman 社区有不同项目目录模板可以选择查看链接,也可以使用 yeoman-generator
generator-license-5.2.0.tgz#09df5fa511a8a23d2bf2133bb26b0fa7d30b73da” dependencies: git-config “^0.0.7” yeoman-generator “^2.0.0” github-username “^4.0.0” inquirer-npm-name “^2.0.0” lodash “^4.17.4” parse-author “^2.0.0” yeoman-generator ^3.10.0” merge-and-concat “^1.0.2” ramda “^0.25.0” sort-object “^3.0.2” travis-config-keys “^1.0.3” yeoman-generator yeoman-generator@^1.1.0, yeoman-generator@^1.1.1: version “1.1.1” resolved “https://registry.yarnpkg.com/yeoman-generator mkdirp “^0.5.1” pinkie-promise “^2.0.1” rimraf “^2.4.4” sinon “^2.3.6” yeoman-environment “^2.0.0” yeoman-generator
这里抛出我们的插件系统,在各个构建工具设计之初就是支持插件的,一般分为两种插件类型: template 模版类,如 react- template,可以理解为脚手架,主要调用了 yeoman-generator