【问题标题】:including devdependencies in package.json包括 package.json 中的 devdependencies
【发布时间】:2015-12-05 08:04:43
【问题描述】:

我想根据需要生成我的 devDependencies。为此,我的生成器中有一个数组和一些类似这样的操作:

var FiddleGenerator = generator.Base.extend({
  init: function() {
    this.devDependencies = [];
  },
  //...excluded for brevity
  gruntConfigure: function() {
    this.devDepedencies = [
      'grunt',
      'grunt-contrib-watch',
      'grunt-contrib-connect'
    ];        
  },
  installStuff: {
    if(this.option('skip-install')) return;
    this.npmInstall(this.devDependencies, { saveDev: true });
  }
});

这里的问题是当用户选择跳过 npm 安装,然后手动安装(即npm install)时,什么都没有安装。

但是,我不能简单地编写这样的 package.json 文件...我为每个包放置了哪些版本,以使它们如下所示:

"devDependencies": {        
    "grunt": "~0.4.2",        
    "grunt-contrib-watch": "~0.5.3",
    "grunt-contrib-connect": "^0.7.0"
  }

【问题讨论】:

    标签: yeoman yeoman-generator install.packages npm-install


    【解决方案1】:

    只需在 JS 代码 (this.fs.writeJSON) 中手动将 devDependencies 写入 package.json 文件。无需为此使用npmInstall()

    您可以在此处看到此操作:https://github.com/yeoman/generator-node/blob/master/generators/gulp/index.js#L38-L69

    【讨论】:

    • 但是版本并不针对我使用的每个包。在我的代码中,npmInstall 负责处理它。您显示的代码扩展了现有的 packages.json 并重写了它。它没有显示如何通过代码动态添加依赖项...
    • 使用添加依赖项的子生成器更新了示例。无论如何,重点仍然存在,只需将它们添加到 package.json 而不是使用npmInstall。您不希望自动版本颠簸,因为您的生成器将在一两个月内生成损坏的代码;这是非常糟糕的用户体验。
    猜你喜欢
    • 2018-10-28
    • 2019-12-18
    • 2017-01-17
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2019-05-01
    • 2015-11-17
    • 2018-04-04
    相关资源
    最近更新 更多