【发布时间】:2015-04-27 05:02:39
【问题描述】:
我想在安装依赖项后创建/更新文件,同时执行生成器(generator-custom)。
$ yo custom
任何指针都会很有帮助。
例如,在安装依赖项后,我正在尝试针对依赖包devDependencies 更新package.json 的devDependencies 部分。但是我无法实现它。请找到下面的代码sn-p。
install: function () {
this.installDependencies({
skipInstall: this.options['skip-install'],
callback: function () {
var pkgPath = process.cwd() + '/package.json';
var pkg = require(pkgPath);
pkg.devDependencies = {
"grunt": "~0.4.2"
};
this.write(pkgPath, JSON.stringify(pkg));
}.bind(this)
});
}
更新 package.json 背后的想法是重新运行 installDependencies 函数。所以当核心包更新它的依赖时,生成器不需要更新它的模板。
正如@SimonBoudrias 所建议的,上述方法不是执行操作的有效方法。可以使用主依赖包的 peerDependencies 来安装依赖包。
【问题讨论】:
-
为什么要在安装运行后添加devDependencies?这只会让您的用户感到困惑。
-
其实,我想从其中一个依赖包的 package.json 中复制 devDependencies 并重新运行安装。
-
背后的原因是,当主依赖的依赖发生变化时,我可以避免更新生成器。请建议是否有更好的方法。
-
然后使用可组合性。无需等待组合生成器安装运行,您将能够编写相同的文件而无需实际敲击硬盘驱动器。 yeoman.io/authoring/composability.html 和 yeoman.io/authoring/file-system.html
-
谢谢@SimonBoudrias。我想我可以通过主依赖包的 peerDependencies 实现同样的效果。
标签: yeoman yeoman-generator writefile post-install