使用Yeoman生成器创建/更新依赖项安装后的文件

使用Yeoman生成器创建/更新依赖项安装后的文件,yeoman,yeoman-generator,writefile,post-install,Yeoman,Yeoman Generator,Writefile,Post Install,我想在安装依赖项后,在执行生成器(generator custom)时创建/更新文件 $yo定制 任何指针都会非常有用 例如,我试图在安装依赖项后更新package.json的devDependencies部分中的依赖项包devDependencies。然而,我无法实现它。请查找下面的代码片段 install: function () { this.installDependencies({ skipInstall: this.options['skip-install'],

我想在安装依赖项后,在执行生成器(
generator custom
)时创建/更新文件

$yo定制

任何指针都会非常有用


例如,我试图在安装依赖项后更新
package.json
devDependencies
部分中的依赖项包
devDependencies
。然而,我无法实现它。请查找下面的代码片段

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所建议的,上述方法不是执行操作的有效方法。可以使用主从属软件包的对等依赖项来安装从属软件包


我想在安装依赖项之后,在执行生成器(生成器自定义)时创建/更新文件

下面的代码片段用于所需的用例

this.npmInstall(['npm-module'], {}, function() {
  this.write('path/to/file', 'file-content');
}.bind(this));

为什么要在安装运行后添加devdependency?这只会让你的用户大惑不解。实际上,我想从一个依赖包的package.json中复制devdependency,然后重新运行安装。背后的原因是,我可以避免在主依赖项的依赖项更改时更新生成器。如果有更好的方法,请提出建议。然后使用可组合性。无需等待组合生成器安装运行,您就可以编写相同的文件,而无需实际访问硬盘。谢谢@SimonBoudrias。我想我可以在主依赖包的对等依赖性上实现同样的效果。是的,但不是。这在最新版本的
yeoman generator
上不起作用。事实上,我收回了这一点。我们修改了代码以使这些模式工作。不过,我相信这是一个有缺陷的逻辑,您应该以不同的方式处理。@SimonBoudrias是用例有缺陷还是实现有缺陷?你能建议一个更好的方法吗?