【问题标题】:The easiest way to develop the Yeoman generator's template itself开发 Yeoman 生成器模板本身的最简单方法
【发布时间】:2016-01-05 15:20:27
【问题描述】:
示例情况
- 我有自己的Yeoman 生成器,它有一个文件夹,其中包含生成项目的“模板”。
- 生成器从用户那里获取一些信息,用这些信息插入“模板”,然后输出一个简单的工作项目。
- 我想确保“模板”确实有效,至少在一种积极的情况下,如果不是所有输入组合。我可以写integration tests(它将使用一些数据运行生成器,然后尝试运行生成的代码并验证是否一切都按预期工作),但是,有时工作量太大,而且对于试错型开发来说不方便或一些原型设计。
问题
是否有一种简单的方法可以使用“模板”本身,如何在本地手动运行或使用它,而无需在每次更改“模板”文件中的单个字母时都先运行生成器“?
也许是某种构建步骤,它会使用一些预设数据为我运行生成器? npm 模块的形式有什么准备好的吗?是否存在最佳实践?
【问题讨论】:
标签:
node.js
yeoman
yeoman-generator
【解决方案1】:
运行集成测试后,您可以在生成的项目文件夹中生成一些命令,看看它们是否正常通过。
【解决方案2】:
到目前为止,我发现的最佳解决方案是创建一个脚本,该脚本:
- 创建一个临时沙箱目录。
- 执行
npm link
- 更改
PATH,使其不包含本地node_modules 的.bin(这是为了防止在运行脚本时本地安装的 Yeoman 优先于全局的,例如npm run develop)。
- 将环境值
NON_INTERACTIVE 设置为真实的值。
- 在沙盒目录中运行
yo <your generator>。
- 在沙盒目录中运行
npm start 以运行新生成的服务器代码。
如果process.env.NON_INTERACTIVE 为真,则更改您的生成器,以便它能够自动为所需提示提供一些没有默认值的虚拟默认值。
然后将脚本运行为:
$ nodemon --watch <directory with your template> --exec <path to your script> --ext js
它很慢,但它有效。这样您就可以自行开发模板,避免每次需要尝试某些东西时都填充生成器。