2012-08-10 186 views
1

我安裝了express,mongodb和mongoose。 這是我npm ls的結果:npm:依賴關係如何管理?

/home/merc/Bookings 
├─┬ [email protected] 
│ └─┬ [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ └── [email protected] 
└─┬ [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ └── [email protected] 
    └── [email protected] 

你可以清楚地看到,由於某種原因,翡翠是放在根目錄下(我相信這發生了,當我運行「表達」不過話說回來,「MongoDB的」是可用於不同的版本(0.9.9和1.1.2),所以是bson(0.1.1和令人擔憂的0.0.4)。

因此,我的問題:如何用npm管理依賴關係嗎?他們喜歡,無論他們選擇哪個版本?

我想問題是:這種重複是否正常「和」通過設計「可以這麼說?

Merc。

回答

2

簡短的回答是,是的,這是設計。當您使用node_modules目錄中的require模塊時,它將使用頂級目錄 - 例如,您在package.json中指定的那個目錄。

其他包都有自己的package.json文件,並且可以自由使用任何他們想要的版本,而當他們require下來在自己的代碼,他們會用自己的node_modules文件夾。

理想情況下,您使用的模塊具有測試等,以確保它們指定的依賴關係的版本(或甚至指定一系列版本,例如0.9.x)工作良好,並查看其中的舊版本的子依賴關係'必然意味着危險,儘管這些模塊的新版本當然可能會修復錯誤等等。您可能需要在GitHub上找到您關注的模塊,下載存儲庫,自行更新package.json和依賴關係,並運行測試以查看新版本是否有效。如果是這樣,或許作者願意接受您的更新pull request

+0

謝謝!簡短而甜美:D – Merc 2012-08-10 07:39:35