2013-06-03 103 views
11

我一直在使用Node.js和npm幾個星期,並取得了巨大成功,並開始質疑安裝本地模塊的最佳實踐。我明白Global vs Local argument,但是,我的問題更多地與本地安裝的位置有關。假設我有一個位於~/ProjectA/的項目,該項目由多個開發人員進行版本控制和處理。當最初使用Node.js和npm進行播放時,我並不知道默認的本地安裝路徑,只是將必要的模塊安裝在默認終端中,導致安裝路徑爲~/node_modules。這最終要做的是要求所有其他開發項目的開發人員在自己的機器上安裝模塊以運行該應用程序。看到其中一些開發者在哪裏跑npm install我仍然非常驚訝它在他們的機器上工作(我猜它與how Node.js and require() looks for modules有關),但不用說,它工作。瞭解模塊的npm和Node.js安裝位置

既然這個項目已經過去了「圍觀」階段,我想正確設置項目文件夾。所以,我的問題是,如果模塊安裝在~/ProjectA/node_modules並因此成爲受版本控制的項目文件的一部分,或者它應該繼續位於開發人員計算機的特定位置......還是它根本不重要?

我只是在尋找一個關於這一個的「最佳實踐」指導,以及其他人在設置項目時做什麼。

+0

閱讀https://npmjs.org/doc/developers.html。你的應用有一個'package.json'嗎? –

回答

9

我認爲這裏的「最佳實踐」是保持項目文件夾中的依賴關係。
到目前爲止,我所見過的幾乎所有的Node項目(我現在是一個Node開發人員,現在已經有8個月左右的時間了)。

您不需要版本控制依賴關係。這就是我如何管理我的節點項目:

  1. 保持鎖定在package.json文件版本,所以每個人都得到了相同的工作版本,在您的項目根使用npm shrinkwrap命令。
  2. 添加node_modules文件夾到您的VCS忽略文件(我用git的,所以我的是.gitignore
  3. 要快樂,你就大功告成了!
+6

爲了確保每個人都有完全相同的版本,你應該使用'npm shrinkwrap' https://npmjs.org/doc/shrinkwrap.html –

+0

添加到答案,謝謝 – gustavohenke

+1

因此,這聽起來像我在正確的軌道上。從版本控制中簡單地排除「node_modules」似乎是合乎邏輯的,但我不清楚我如何管理每個人的軟件包。它看起來像是通過''package.json''文件或''npm shrinkwrap''命令並且這是缺少的鏈接。謝謝您的幫助! – Sanuden