使用npm安装依赖项的子集

使用npm安装依赖项的子集,npm,npm-install,package.json,Npm,Npm Install,Package.json,有没有一种方法可以在npm中使用别名或“feature tag”指定依赖项的子集?也就是说,如果有人知道他们将只使用我的软件包中某些有限的功能子集,他们可以指定这些功能,并且在npm install上,只下载与这些功能相关的依赖项 我的软件包有大量的依赖项,安装几乎需要半个小时,但大多数用户只需要其功能的一个子集。我想的是如何将依赖项分为devdependency和dependency,但是使用n个组,而不仅仅是这两个组。例如: npm install --feature feature1 --

有没有一种方法可以在npm中使用别名或“feature tag”指定依赖项的子集?也就是说,如果有人知道他们将只使用我的软件包中某些有限的功能子集,他们可以指定这些功能,并且在
npm install
上,只下载与这些功能相关的依赖项

我的软件包有大量的依赖项,安装几乎需要半个小时,但大多数用户只需要其功能的一个子集。我想的是如何将依赖项分为devdependency和dependency,但是使用n个组,而不仅仅是这两个组。例如:

npm install --feature feature1 --feature feature2

从阅读中,我认为这里的答案是“不”,但是你对这个案例有什么建议?将软件包拆分为更小的插件软件包,让用户安装他们想要的插件?我不想让用户配置太复杂的东西。

简单的回答是不,npm并不是为此而设计的,主要是因为依赖树非常大,这个用例可能会让大多数用户的事情变得复杂。话虽如此,我还是写了一个包来做这件事

我的软件包是
install subset
,可以使用
npm install-g install subset

基本上,您可以为package.json中的命名子集构建包含列表和排除列表,如下所示:

“子集”:{
“构建”:{
“包括”:[
“巴贝尔cli”,
“dotenv”
]
},
“测试”:{
“排除”:[
“埃斯林特”,
“皮棉规则”,
“更漂亮”
]
}
}
然后调用它,例如,
install subset test

这将临时重写您的package.json,以不安装排除在外的那些软件包,然后进行恢复,这取决于软件包,可以节省大量时间和带宽


同样适用于Thread,它是开源的,欢迎发布/PRs。

另一个可用于此目的的第三方软件包是。它允许您在软件包文件中定义
[GROUP\u NAME]依赖项
数组(注意:不是对象),然后使用
deps install[GROUP\u NAME]
安装该子集

下面是他们自述的一个例子:

{
...  
“依赖性”:{
“拦截标准输出”:“^0.1.2”,
“笑话”:“^20.0.4”,
“条带颜色”:“^0.1.0”
},
//我们的新组表示测试依赖项
“testDependencies”:[
“开玩笑”
]
...
}
现在,您只能安装此新组的依赖项:

#这将安装jest@^20.0.4:
$(npm bin)/deps安装测试
副本