在我的开发项目中,我有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"
}
}
Run Code Online (Sandbox Code Playgroud)
并打电话
npm install --no-optional
Run Code Online (Sandbox Code Playgroud)
它将只安装以下内容:
some-package-name-1, some-package-name-2
Run Code Online (Sandbox Code Playgroud)
这里有一个超级迟到的回复:
简短的回答是否定的,npm 不是为此而设计的。这增加了 npm 不愿意支持的复杂性。话虽这么说,我写了一个包来做到这一点。
我的包是install-subset,可以全局安装npm install -g install-subset
要使用它,您可以在 package.json 中为指定安装子集构建包含列表和排除列表,如下所示:
"subsets": {
"build": {
"include": [
"babel-cli",
"dotenv"
]
},
"test": {
"exclude": [
"eslint",
"lint-rules",
"prettier"
]
}
}
Run Code Online (Sandbox Code Playgroud)
然后运行install-subset test
这将暂时重写您的 package.json 以不安装那些排除的软件包,然后恢复它(与 lerna 的操作方式非常相似),这取决于软件包可以节省大量时间和带宽。
也适用于纱线,是开源的,欢迎提出问题/PR。
| 归档时间: |
|
| 查看次数: |
4128 次 |
| 最近记录: |