在我的开发项目中,我有package.json包含 3 组依赖项:
我们的构建集成机器是唯一一个能够拉取所有依赖项的设置,而所有开发机器都不能,这造成了依赖安装的噩梦。
是否可以在install命令中告诉 NPM安装所有除外,并提供package.json安装过程中要跳过的模块列表?
否则,考虑到使用所有权限设置所有代理是不现实的,处理这种情况的最佳方法是什么?
您可以使用另一种方式,例如此处的官方文档中描述的“optionalDependencies”:
https://docs.npmjs.com/cli/v6/configuring-npm/package-json#optionaldependencies
例子:
{
  "dependencies": {
    "some-package-name-1": "1.0.0"
  },
  "devDependencies": {
    "some-package-name-2": "1.0.0"
  },
  "optionalDependencies": {
    "some-package-name-3": "1.0.0"
  }
}
并打电话
npm install --no-optional
它将只安装以下内容:
some-package-name-1, some-package-name-2
这里有一个超级迟到的回复:
简短的回答是否定的,npm 不是为此而设计的。这增加了 npm 不愿意支持的复杂性。话虽这么说,我写了一个包来做到这一点。
我的包是install-subset,可以全局安装npm install -g install-subset
要使用它,您可以在 package.json 中为指定安装子集构建包含列表和排除列表,如下所示:
"subsets": {
    "build": {
        "include": [
            "babel-cli",
            "dotenv"
        ]
    },
    "test": {
        "exclude": [
            "eslint",
            "lint-rules",
            "prettier"
        ]
    }
}
然后运行install-subset test
这将暂时重写您的 package.json 以不安装那些排除的软件包,然后恢复它(与 lerna 的操作方式非常相似),这取决于软件包可以节省大量时间和带宽。
也适用于纱线,是开源的,欢迎提出问题/PR。