gpt4 book ai didi

node.js - 如何防止安装未使用的 npm 依赖项?

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:33 27 4
gpt4 key购买 nike

所以在我的项目中,我需要多个包,包括“dep1”。

“dep1”需要另一个依赖项“dep2”。

“dep2”需要多个包,包括“dep3”。

问题是,“dep3”与我想要使用的许可证不兼容(实际上,与我老板想要使用的许可证不兼容)。

幸运的是,“dep2”只有一个函数使用了“dep3”,而“dep1”没有使用该函数。因此,如果我从 node_modules 中删除“dep3”,一切都会顺利进行。

我遇到的问题是,如何修改 package.json 以在执行 npm install 时考虑到这一点,而不是安装这个包?

我知道我可以分支“dep2”来抑制该功能,然后“dep1”来使用修改的“dep2”,但这似乎太过分了,我将依赖于包的所有者来接受我的分支。我正在寻找类似“好吧,只需将行ignore : "dep3"添加到package.json”之类的解决方案,但找不到任何解决方案。

感谢您的帮助!

最佳答案

显而易见的方法是从 NPM postinstall Hook 中的 node_modules 中删除不需要的依赖项。

或者,可以提供 stub 来代替 dep3。 stub 应包含 package.json,它将将其标识为具有匹配版本的替代品:

{
"name": "dep3",
"version": "VERSION THAT MATCHES DEP2 CONSTRAINT"
}

可以在dep中指定为本地依赖:

...
"dependencies": {
"dep3": "./dep3-stub",
...

或者作为 Git 依赖项:

...
"dependencies": {
"dep3": "github-user-name/dep3-stub",
...

如果版本约束匹配,dep3 stub 将被安装并使用,而不是真正的包,否则 dep2 可能会安装它自己的 dep3 副本。

I am aware I could branch "dep2" to supress the function, and then "dep1" to use the modifies "dep2", but this seems overkill, and I would be dependant of the owner of the packages to accept my branch.

这是一个合理的做法。这与业主无关。可以使用 dep2 fork 代替 dep2 NPM 包,其方式与 dep3 显示的方式相同。

关于node.js - 如何防止安装未使用的 npm 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52950054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com