假设您要安装一个库 lib-a
,它具有依赖项 dep-1
和 dep-2
。如果 lib-a
在其 package.json 中声明使用过期的 dep-2
版本(假设它在 Node 0.8.0 上不起作用刚刚出来),但是 dep-2
的一个分支适用于 Node 0.8.0 - 分支名称 node0.8.0
.
所以等式中的包是:
git://github.com/user-a/lib-a
git://github.com/user-b/dep-1
git://github.com/user-c/dep-2
git://github.com/user-c/dep-2#node0.8.0
有没有办法告诉 NPM 安装 lib-a
,但是使用 dep-2#node0.8.0
而不是 dep-2
?
使用 NPM,您可以像这样安装项目的特定分支:
npm install git://github.com/user-c/dep-2#node0.8.0
如果我要自定义 lib-a
的 package.json,你可以告诉它像这样使用 dep-2#node0.8.0
:
{
"name": "lib-a",
"dependencies": {
"dep-1": ">= 1.5.0",
"dep-2": "git://github.com/user-c/dep-2#node0.8.0"
}
}
通过修改 package.json 就可以运行
npm install lib-a
它会安装 node 0.8.0 兼容的 dep-2
分支。但是,这需要我有权修改 lib-a
,而对于我的具体情况,我没有。从技术上讲,我可以 fork lib-a
并对 package.json 进行上述更改。但在我的具体情况下, lib-a
是 another 库的依赖项,所以我必须 fork 它所引用的项目,然后继续......
那么问题来了,有没有办法告诉 NPM 安装 lib-a
,并告诉它使用 dep 的
?像这样的:node0.8.0
分支-2
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
那太棒了。如果这是不可能的,那会很高兴知道这样我就可以准备好必须 fork /自定义项目链。
最佳答案
NPM 安装语法:
npm install (with no args in a package dir)
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
npm install [@<scope>/]<name>@<tag>
npm install [@<scope>/]<name>@<version>
npm install [@<scope>/]<name>@<version range>
npm i (with any of the previous argument usage)
因此您可以选择其中一种方法来安装您的模块。
安装特定版本的最简单方法是这种情况:
npm install module@0.0.2
关于node.js - 使用 NPM 安装包时,你能告诉它使用其依赖项之一的不同版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11233133/