img

動機

npm 最令人詬病的問題:

  • 套件浪費大量硬碟容量,有100個專案需要使用同一種套件(1MB),就浪費100倍的硬碟容量(100MB)。
  • 套件安裝速度較慢
  • 扁平化的 node_modules 結構

pnpm 能解決以下兩點問題:

  • 硬碟空間利用率非常高,使用同一個套件位置,當多個專案需要時,使用硬連結方式共享同版本的套件。
  • 套件安裝速度比 npm 快

基於以上兩點,再加上能夠使用 pnpm 來管理 node.js 的版本,能以一抵三(npm、yarn、nvm)。

移除nvm

  1. 在終端機中輸入:rm -rf $NVM_DIR

  2. 開啟 ~/.zshrc 清除有關 nvm 相關的環境設定

    1
    2
    3
    4
    # nvm & node
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

安裝pnpm

獨立腳本安裝pnpm

官網有說明,在沒有預先安裝 node.js 的情況下,可以使用獨立腳本安裝pnpm,新系統適合。

1
curl -fsSL https://get.pnpm.io/install.sh | sh -

如果沒有 curl,也可以使用 wget:

1
wget -qO- https://get.pnpm.io/install.sh | sh -

Windows(使用PowerShell):

1
iwr https://get.pnpm.io/install.ps1 -useb | iex

然後就可以使用 pnpm env 指令来安装 Node.js。

Homebrew安裝

在沒有預先安裝 node.js 的環境下,如果要使用 pnpm env 來管理 node 版本,不適合使用 Homebrew 安裝 pnpm,新系統也不適合,因為系統需要先有 node 環境才可以執行 pnpm 的 CLI,否則會出現 env: node: No such file or directory 的訊息。

而我的情況是,因為已經先把 nvm 移除掉了,系統中已經沒有 node 環境了,除非要先把 pnpm env 的 node 環境安裝好,才將 nvm 移除。

Homebrew:

1
brew install pnpm

pnpm env取代nvm

管理 node.js 執行環境

use

安裝並使用指定版本的 Node.js。

安裝LTS版本的 Node.js:

1
pnpm env use --global lts

安裝指定版本:

1
pnpm env use --global 14

remove, rm

移除特定的 Node.js 版本。

1
pnpm env remove --global 14.0.0

使用 pnpm 替代 yarn, npm, nvm