npm本地安裝和全局安裝
特性 | npm install(本地安裝) | npm install -g(全局安裝) |
---|---|---|
安裝位置 | 當(dāng)前項(xiàng)目的 node_modules 目錄 | 系統(tǒng)的全局 node_modules 目錄 |
使用方式 | 在項(xiàng)目?jī)?nèi)使用(或通過(guò) npx 執(zhí)行命令) | 可以在全局范圍內(nèi)的任何地方使用 |
是否記錄依賴 | 記錄在項(xiàng)目的 package.json 中 | 不記錄在項(xiàng)目中唐片,影響全局環(huán)境 |
典型用途 | 項(xiàng)目依賴庫(kù)、工具或框架 | 全局命令行工具混移、常用開(kāi)發(fā)工具 |
全局安裝位置瘟忱,安裝的位置 通過(guò)命令來(lái)查看:
npm root -g
/Users/a58/.nvm/versions/node/v14.21.3/lib/node_modules
which vuepress
/Users/a58/.nvm/versions/node/v14.21.3/bin/vuepress
/Users/a58/.nvm/versions/node/v14.21.3/lib/node_modules
npm 全局安裝的pacakge包在對(duì)應(yīng)node版本node_modules目錄下
yarn 本地安裝和全局安裝
特性 | yarn add(本地安裝) | yarn global add(全局安裝) |
---|---|---|
安裝位置 | 當(dāng)前項(xiàng)目的 node_modules 目錄 | 系統(tǒng)的全局 node_modules 目錄 |
使用方式 | 在項(xiàng)目?jī)?nèi)使用(或通過(guò) npx /yarn run 執(zhí)行命令) | 可以在全局范圍內(nèi)的任何地方使用 |
依賴記錄 | 記錄在項(xiàng)目的 package.json 中 | 不記錄在項(xiàng)目中惭适,全局可用 |
典型用途 | 項(xiàng)目依賴庫(kù)、工具驹沿、框架等 | 全局命令行工具惨恭、常用開(kāi)發(fā)工具 |
全局安裝位置,安裝的位置 通過(guò)命令來(lái)查看:
yarn global dir
/Users/a58/.config/yarn/global
yarn global bin
/usr/local/bin
/Users/a58/.config/yarn/global:
image.png
yarn全局安裝的bin雖然這里打印出是在/usr/local/bin
但其實(shí)這里是快捷方式通熄,對(duì)應(yīng)的是
/Users/a58/.config/yarn/global/node_modules/.bin/中的bin
ls -l /usr/local/bin/babel
lrwxr-xr-x 1 a58 staff 62 Sep 3 20:00 /usr/local/bin/babel ->
../../../Users/a58/.config/yarn/global/node_modules/.bin/babel
結(jié)論:
安裝工具不同:
npm install -g 安裝的全局包會(huì)放在 nvm 管理的 Node.js 目錄下唆涝,
即 /Users/a58/.nvm/versions/node/v14.21.3/lib/node_modules。
yarn global add 安裝的全局包會(huì)放在 yarn 自己的全局目錄下唇辨,即 /Users/a58/.config/yarn/global/node_modules廊酣。
管理方式不同:
nvm 管理的 npm 全局包路徑跟隨你使用的 Node.js 版本。如果你切換 Node.js 版本助泽,nvm 可能會(huì)導(dǎo)致全局包路徑變化啰扛。
yarn 使用獨(dú)立的目錄來(lái)管理全局包嚎京,與 Node.js 版本無(wú)關(guān),即使你切換 Node.js 版本隐解,yarn 的全局包仍然會(huì)在相同的目錄下鞍帝。