Yeoman定制生成器

6
我想使用最新版本的Yeoman制作自定义生成器,但我遇到了一些困难。我已经查阅了各种文档和示例(例如webapp和angular生成器),但仍有几个问题。
  1. 如何测试生成器的工作流程?如果我有一个项目是生成器本身,那我是否需要不断地创建新目录来运行“yo my-generator”?
  2. 在Yo 1.0 beta版中,生成器框架是否有所改变?是否存在破坏性更改?
  3. 生成器如何向全局“yo”二进制文件注册自己?
谢谢。
2个回答

7
这个问题已经有几个月了,但我认为对于现在找到它的任何人来说,了解更多内容是很有用的。请注意,http://yeoman.io/generators.html 上已经解释了更多内容。
问题1:
可以轻松地在本地测试您的生成器。例如,如果您的生成器名为“generator-mtv-raps”。
$ cd ~/dev/generator-mtv-raps/
$ npm link

现在如果您执行以下操作:
$ cd ~/dev/mytest/
$ yo mtv-raps

它会被构建。

此外,使用mocha对生成器进行单元测试非常简单。有一组内置的测试辅助函数。您需要测试的基础内容可以在generator-webapp的测试中找到https://github.com/yeoman/generator-webapp/blob/master/test/test.js

  1. 测试生成器是否可以被引用而不会出现错误。
  2. 使用helpers.mockPrompt模拟提示。
  3. 使用helpers.assertFiles测试所需创建的所有文件是否已创建。
  4. 测试模拟的提示值是否插入到创建的文件中。

第4点有点棘手,期望文件的数组可以传递一个正则表达式进行检查。如果想了解更多有关测试辅助函数的信息,请查看源代码。https://github.com/yeoman/generator/blob/master/lib/test/helpers.js

问题2:已由btford回答。

问题3:

通过全局安装(或以上述方式链接)将生成器绑定到yo并使用命名约定。所有生成器都以“generator”开头,然后是“-”,然后是“名称”。

因此,generator-mtv-raps通过$ yo mtv-raps访问。


谢谢你,你帮我省了好几个小时! - Nick

6
以下是翻译的结果:

如何测试生成器的工作流程?

我将在未来几天内为generator-angular进行这方面的工作。您可以在Github上跟踪我的进度。由于从一个yeoman命令转换到使用yo与bower和yo一起使用,因此目前没有太多示例。我想Generator.prototype.method将进行某种级别的单元测试,以及涉及编写bash脚本运行yo、npm、bower和grunt的E2E测试。

随着yo 1.0的beta版,生成器框架是否发生了变化?是否有重大变更?

在移植generator-angular的经验中,我并没有看到太多变化。有一个新的可选简化API,可能会很有用。

生成器如何在全局yo二进制文件中注册自己?

现在的答案是它不会注册。你需要在项目目录中安装/使用生成器。我之前因为一个错误的符号链接而让它工作了,但这并不是推荐的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接