2014-05-07 52 views
5

我是一種新手關於npm,所以請幫助。npm安裝從私人註冊表與回退到git存儲庫的URL

假設我有一些模塊,我正在使用它們中的每一個使用git存儲庫,並且我還安裝了sinopia以擁有一個私有註冊表。問題是我們有兩支隊伍。一個城市的團隊和另一個團隊是世界末日。在我的團隊中,我已經安裝了私人註冊表,以便在本地網絡中可用。這裏的問題是,當我們推進git時,另一個團隊沒有自己的私人註冊表,即使他們確實需要在他們的私有註冊表中發佈每個模塊的每個版本。另一個問題是,我們不能(也不想)通過IP將sinopia服務器公開。

現在的問題是:我們如何配置package.json/npm管理來自私營註冊表相關性(如果註冊表響應)和Git倉庫也(如果私人註冊表不響應 - 又名它不不存在 - )。

我知道我們可以設置每個依賴關係來引用git標記/分支/提交,但我們也希望在可能的情況下使用註冊表。

UPDATE

所以基本上我需要一個的package.json會知道,如果這部分失敗:

"dependencies": { 
    "app.core": "0.1.1" 
} 

因爲私有註冊表未安裝或不可用時,它仍然可以從東西加載的關係是不一樣的:

"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 

另外請注意,我會更喜歡的東西,可以推在git倉庫中,這樣任何一個團隊都不應該在本地更改package.json。

希望有人能幫忙。

+0

多註冊表尚未完成。見[this](https://github.com/npm/npm/issues/1401)尋求幫助。 – user568109

+0

@ user568109謝謝,但這不是我所需要的。我需要有一個私人註冊表,如果這個不存在,依賴將從「git + ssh://[email protected]/xxx/yyy.git#000」存儲庫安裝 – helly0d

+0

@ user568109我更新了這個問題讓我更加清楚我想要達到的目標。 – helly0d

回答

1

,我發現到了那一刻的工作唯一的辦法就是有這樣的的package.json:

"scripts": { 
    "postinstall" : "node fallbackDependencies.js" 
} 
"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 
"optionalDependencies": { 
    "app.core": "0.1.1" 
} 

而且在fallbackDependencies.js文件來運行一個腳本,它所有的依賴從包中。 json,它們也位於optionalDependencies中,並且它們分別檢查node_modules文件夾中是否存在具有該名稱的文件夾。如果沒有文件夾,則運行npm install <json.dependencies[x]>

這是我能想到的唯一的臨時解決方案。

如果有人有更好的方法,請隨時回答。

相關問題