官方文件:docs.npmjs.com/files/folde…
全域性包安裝位置
-
Unix
npm install -g package # -> `{prefix}/lib/node_modules/package` # 為可執行檔案在 `{prefix}/bin/` 目錄中建立連結 複製程式碼
-
Windows:
{prefix}/node_modules/
npm install -g package # -> `{prefix}/node_modules/package` # 為可執行檔案在 `{prefix}/` 目錄中建立連結 複製程式碼
prefix: docs.npmjs.com/misc/config…
區域性包安裝位置
當執行 npm install foo@1.2.3
時:
-
npm 從當前工作目錄開始,在目錄樹中向上(父目錄方向)查詢:
-
直到找到一個包含 package.json 檔案或者 node_modules 目錄的目錄,則以該目錄為
package_root
,並停止查詢。 -
如果沒有找到包含 package.json 檔案或者 node_modules 目錄的目錄,則以當前工作目錄為
package_root
。
-
-
安裝 foo 包
-
將 foo 包的內容拷貝到
{package_root}/node_modules/foo
。 -
在
{package_root}/node_modules/.bin/
下建立相關可執行檔案的連結。
-
-
安裝 foo 包的依賴包
假設 foo 包依賴
bar@1.2.3
-
如果
{package_root}/node_modules/
中已經安裝了bar@1.2.3
,則不再安裝bar@1.2.3
。 -
如果
{package_root}/node_modules/
中已經安裝了與bar@1.2.3
不同版本的 bar 包,則在{package_root}/node_modules/foo/node_modules/
目錄中安裝bar@1.2.3
。 -
如果
{package_root}/node_modules/
中還沒有安裝任何版本的 bar 包,則在{package_root}/node_modules/
中安裝bar@1.2.3
。
-
-
按 (3) 中的方法遞迴安裝依賴包的依賴包。
scoped 包安裝位置
對於 scoped 包,假設安裝 @myorg/foo@1.2.3
,與安裝非 scoped 包 foo@1.2.3
相比,只是在 foo
和 node_modules
中間多了一層 @myorg
目錄:
npm install foo@1.2.3
->.../node_modules/foo
npm install @myorg/foo@1.2.3
->.../node_modules/@myorg/foo