假設你想安裝一個庫lib-a
,它有依賴項dep-1
和dep-2
。如果lib-a
已在其package.json中聲明使用已過期的dep-2
版本(假設它在剛剛發佈的節點0.8.0上不起作用),但是有一個支持節點0.8的dep-2
分支.0 - 分行名稱node0.8.0
。使用NPM安裝軟件包時,您能否告訴它使用其某個依賴項的不同版本?
所以公式中的包:
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
它將安裝與節點0.8.0兼容的dep-2
分支。但是,這需要我有權修改lib-a
,對於我的具體情況我不這樣做。從技術上講,我可以分叉lib-a
並對package.json進行上述更改。但在我的特定情況下,lib-a
是另一庫的依賴性,所以我不得不叉項目它引用的,和和...
因此問題是,是有辦法告訴NPM安裝lib-a
,並告訴它使用dep-2
的node0.8.0
分支?這樣的事情:
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
這將是太棒了。如果這是不可能的,那將是很好的知道,所以我可以準備自己必須分叉/定製項目鏈。
它看起來就像如果你安裝的依賴,然後再到其他庫需要該依賴不會自行下載。解決了這個問題!謝謝! –
這是正確的嗎?我嘗試了npm -g install/path/to/my/fork-with-fix,然後npm -g安裝package-which-should-use-fork-dependency -with-fix並...它仍然下載正式版本。 –
看看'npm link'。 – knownasilya