什么是pnpm?
pnpm是 Node.js 的替代包管理器。它是 npm 的直接替代品,但速度更快、效率更高。
為什么效率更高?
當(dāng)您安裝軟件包時(shí),我們會(huì)將其保存在您機(jī)器上的全局存儲(chǔ)中,然后我們會(huì)從中創(chuàng)建一個(gè)硬鏈接,而不是進(jìn)行復(fù)制。對(duì)于模塊的每個(gè)版本,磁盤上只保留一個(gè)副本。例如,當(dāng)使用
npm或yarn時(shí),如果您有 100 個(gè)使用lodash的包,則磁盤上將有 100 個(gè)lodash副本。pnpm可讓您節(jié)省數(shù) GB 的磁盤空間!
pnpm優(yōu)勢(shì)
pnpm 擁有Yarn 超過 npm 的所有附加功能:
-
安全: 與
yarn一樣,pnpm有一個(gè)包含所有已安裝包校驗(yàn)和的特殊文件,用于在執(zhí)行代碼之前驗(yàn)證每個(gè)已安裝包的完整性。 -
離線模式:
pnpm將所有下載的包tarball保存在本地注冊(cè)表鏡像中。當(dāng)包在本地可用時(shí),它從不發(fā)出請(qǐng)求。使用該--offline參數(shù)可以完全禁止HTTP請(qǐng)求。 -
速度:
pnpm不僅比npm快,而且比yarn快。無論是冷緩存還是熱緩存,它都比yarn快。yarn從緩存中復(fù)制文件,而pnpm只是從全局存儲(chǔ)中鏈接它們。
與 npm 的差別
- 與
npm不同的是,pnpm會(huì)校驗(yàn)所有的參數(shù)。 比如,pnpm install --foo會(huì)執(zhí)行失敗,因?yàn)?--foo不是pnpm install的有效參數(shù)。
但是,某些依賴關(guān)系可能使用 npm_config_ 環(huán)境變量,其中 從 CLI 選項(xiàng)中填充。 在這種情況下,你有以下選擇:
- 設(shè)置明確的環(huán)境變量:
npm_config_foo=true pnpm install - 用
--config.強(qiáng)制使用未知選項(xiàng):pnpm install --config.foo
pnpm使用
官網(wǎng): https://pnpm.js.org/installation/
全局安裝
npm install pnpm -g
設(shè)置源:
// 查看源
pnpm config get registry
// 切換淘寶源
pnpm config set registry https://registry.npmmirror.com/
使用:
pnpm install 包名稱
pnpm i 包名稱
pnpm add 包名稱 // -S 默認(rèn)寫入dependencies
pnpm add -D // -D devDependencies
pnpm add -g // 全局安裝
移除:
pnpm remove 包名稱 // 移除包
pnpm remove 包名稱 --global // 移除全局包
設(shè)置存儲(chǔ)路徑:
pnpm config set store-dir /path/to/.pnpm-store
個(gè)人使用
一些需要node-gyp的包一定要記得安裝好
在系統(tǒng)上禁止使用腳本解決方法
# 以管理員身份運(yùn)行power shell
set-executionpolicy remotesigned