在我的开发项目中,我有package.json
,其中包含3组依赖项:
我们的构建集成机器是唯一能够提取所有依赖项的设置,而所有Dev机器都不能,这会造成依赖安装的噩梦。
是否可以在install
命令中告知NPM安装除了{n}之外的所有模块,并在安装过程中提供要跳过的package.json
模块列表?
否则,考虑到使用所有权限设置所有代理并不现实,处理这种情况的最佳方法是什么?
答案 0 :(得分:1)
这里有一个超级迟到的回复:
简短的回答是否定的,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。
答案 1 :(得分:0)
您可以使用其他方法,例如此处的官方文档中所述的“ optionalDependecies”:
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