假设您要安装一个lib-a
具有依赖项的库,dep-1
并且dep-2
. 如果lib-a
已在其 package.json 中声明使用dep-2
已过期的版本(例如它不适用于刚刚发布的节点 0.8.0),但有一个分支dep-2
适用于节点 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
如果我要自定义 package.json 的lib-a
,你可以告诉它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
它将安装节点 0.8.0 兼容dep-2
分支。但是,这要求我可以访问 modifying lib-a
,而对于我的具体情况,我没有。从技术上讲,我可以分叉lib-a
并对 package.json 进行上述更改。但在我的具体情况下,lib-a
是另一个库的依赖项,所以我必须分叉它所引用的项目,等等......
所以问题是,有没有办法告诉 NPM 安装lib-a
,并告诉它使用的node0.8.0
分支dep-2
?像这样的东西:
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
那将是真棒。如果这是不可能的,那会很高兴知道这样我就可以准备好分叉/自定义项目链。