最近在生成器系统(npm search yeoman-generator
)中引入了许多更改和新功能。如果您没有关注 yeoman/generator,您可能错过了最新的更改。别担心,我们在 更改日志中记录了每个最近的版本!
随着新年的开始,我们决定为我们的官方生成器应该实现的最重要更改创建一个待办事项列表。这将使它们保持整洁,并为即将到来的新功能做好准备;特别是组合多个生成器在一起的能力!
您可能不是官方生成器维护者,但我们邀请您跟随我们的步伐,并确保您遵循这些指南。所以,开始了!
生成器应生成一个 .yo-rc.json
文件
.yo-rc.json
文件允许您保存配置,但也用作定义项目根文件夹的标记。这允许用户从子目录运行 yo
命令来处理他们的整个项目。
这也是组合生成器如何知道项目根目录的方法。
只需在您的生成器中添加此行,至少生成一次该文件即可
this.config.save();
当然,如果您使用配置对象来存储数据,它将已经被创建。 在我们的 API 参考中阅读有关配置存储的更多信息。
使用新的 .extend()
方法代替 util.inherit
直到最近,您还可以通过以下方式扩展基本生成器
var BlogGenerator = (module.exports = function() {
generators.Base.apply(this, arguments);
// ...
});
util.inherits(BlogGenerator, generators.Base);
您现在可以使用类似于 Backbone.js 的方式来完成相同操作
var BlogGenerator = (module.exports = generators.Base.extend({
/* prototype methods goes here */
}));
如您所知,我们的下一个重要里程碑是允许生成器彼此组合。这意味着您可以在自己的生成器中使用外部生成器,并允许用户使用多个生成器构建他们的应用程序(例如,我想使用 Sailsjs 和 Angular 构建一个应用程序,使用 Bootstrap 并支持 Jenkins 测试)。使用 .extend
继承签名将使您的生成器更容易集成到可组合的 Yeoman 生态系统中。
请注意,我们已将 继承逻辑提取到一个小的独立 NPM 模块中。将此功能添加到您自己的项目中将非常容易,没有任何开销!
删除对已弃用测试方法的使用
在 0.16.0
版本中,我们弃用了一些测试方法并添加了一些其他方法。弃用现在记录在控制台中,因此请确保您摆脱了它们!
此外,辅助断言方法 现在在 yeoman.assert
命名空间中公开。
更新生成的 bower.json 和 package.json 中的依赖项
像往常一样,更新您的依赖项。您可以为此使用 david 工具。
确保 package.json peerDependencies
不使用波浪号 ~
版本控制
NPM peerDependencies
很难正确使用。由于它们安装在全局 node_modules
文件夹中,因此由于不同包之间所需的版本不兼容,它们通常是安装错误的原因。请做一个好公民,不要通过使用限制性的版本要求来使问题变得更糟。
因此,请将其作为规则,始终使用最小范围 (>=
) 或使用任何可用版本 (*
) 来定义 peerDependencies
版本。
{
"peerDependencies": {
// GOOD
"grunt-cli": ">= 0.1.0",
// GOOD
"gulp": "*",
// BAD - don't ever do this
"generator-karma": "~1.2.0",
"generator-commonjs": "1.2.0"
}
}
说到这里,祝你好运!
就是这样!祝你好运,继续构建很棒的生成器。
如果您是生成器作者,您确实应该点击 在生成器系统存储库上观看
按钮 - 通过这种方式,您将随时了解我们的未来计划和更新。还要确保检查 [组合性]
问题,这是我们的下一个重要里程碑,我们需要您的反馈!