使用 npm 安装依赖项的子集

Yos*_*ner 5 npm package.json npm-install

有没有办法使用别名或“功能标签”来指定 npm 中的依赖项子集?也就是说,如果有人知道他们只会使用我的包功能的某些有限子集,他们可以指定这些功能,并且npm install仅下载与这些功能相关的依赖项?

我的包有大量的依赖项,安装需要近半个小时,但大多数用户只需要其功能的子集。我正在考虑如何将依赖项分为 devDependency 和依赖项,但有 n 个组,而不仅仅是这两个组。例如:

npm install --feature feature1 --feature feature2
Run Code Online (Sandbox Code Playgroud)

通过阅读文档,我认为这里的答案是“否”,但是您对这种情况的建议是什么?将包拆分为更小的插件包并让用户安装他们想要的插件?我不想要用户配置过于复杂的东西。

tab*_*dle 6

简短的回答是否定的,npm 并不是为此而设计的,主要是因为依赖关系树非常大,而且这个用例实际上可能会让大多数用户的事情变得复杂。话虽这么说,我写了一个包来做到这一点。

我的包是install-subset, 可以全局安装npm install -g install-subset

https://www.npmjs.com/package/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 以不安装那些排除的软件包,然后恢复它,这取决于软件包可以节省大量时间和带宽。

也适用于纱线,是开源的,欢迎提出问题/PR。