npm包安裝的兩種方式
全局安裝
npm install <package-name> -g
- 意義:將安裝的包作爲一個命令行工具,在任意目錄下都可以訪問調用
- 安裝路徑:默認安裝在
/usr/local/lib/node_modules
下,可以通過配置安裝到其他路徑下。如通過nvm(node版本管理工具)可以配置到對應的node版本下面
局部安裝
npm install <package-name>
- 意義:在當前目錄下,使用require語句加載
- 安裝路徑:在當前目錄下的node_modules目錄中
Mac中的Shell與node
- Shell中在終端可以直接敲的命令,其實是在執行
/bin
目錄下的腳本/usr/bin
目錄下的腳本/usr/local/bin
目錄下的腳本
這些腳本路徑是由/.etc/paths
文件(Mac環境變量設置文件)內容來指定。另外,username/.bash_profile
文件也可以配置環境變量,該文件在用戶目錄下。
npm全局安裝與環境變量
當我們在npm install -g
的時候,其實是將相關文件安裝在/usr/local/lib/node_modules目錄下,同時在全局命令/usr/local/bin
目錄下會有一個映射腳本,將其指向/usr/local/lib
下的真實文件。這麼做的好處是,可以在保證只有一份可執行文件的前提下,給命令取別名。
npm link
參考
npm link
就像做了npm install -g
,唯一的區別是,npm link
在 /usr/local/lib
下的 node_modules 裏不是存的真實的文件,而是存了一個快捷方式,指向你當前執行 npm link
的目錄。
如果開發的是node包,則執行的命令名和真實執行的文件入口,會根據項目的 package.json 裏 bin 的配置來獲取。
使用
進入node包的項目目錄,輸入npm link
。
全局link
測試 node 環境下運行的包時,需要使用全局 link。並且做npm link之前,需要在 package.json 裏配置 bin 字段。
// package.json
"bin" : {
"your-command-name": "./path-to/your-command-entry-file"
}
在當前目錄下,輸入npm link
。成功後,就可以直接在終端執行全局命令 your-command-name
了
項目下link
如果想要在項目中使用這個node包,如該node包是一個組件庫,則需要兩步link
- 先將該node包進行全局link
- 在項目中進行
npm link package-name