pnpm link
別名:ln
讓目前的本機套件在系統範圍內或其他位置可以使用。
pnpm link <dir>
pnpm link --global
pnpm link --global <pkg>
選項
--dir <dir>, -C
- 預設值:目前的工作目錄
- 類型:路徑字串
將連結位置變更為 <dir>
。
pnpm link <dir>
將 <dir>
資料夾中的套件連結至執行此指令的套件的 node_modules,或透過 --dir
選項指定。
例如,如果您位於
~/projects/foo
中,且您執行pnpm link --dir ../bar
,則foo
將連結至bar/node_modules/foo
。
pnpm link --global
將執行此指令或透過 --dir
選項指定的位置中的套件連結至全域 node_modules
,因此它可以透過 pnpm link --global <pkg>
從另一個套件參考。此外,如果套件具有 bin
欄位,則套件的二進位檔將在系統範圍內可用。
pnpm link --global <pkg>
將指定的套件 (<pkg>
) 從全域 node_modules
連結至執行此指令或透過 --dir
選項指定的套件的 node_modules
。
pnpm link <dir>
和 pnpm link --dir <dir>
之間的差異
pnpm link <dir>
將 <dir>
中的套件連結至執行指令的套件的 node_modules
。pnpm link --dir <dir>
將目前工作目錄中的套件連結至 <dir>
。
# The current directory is foo
pnpm link ../bar
- foo
- node_modules
- bar -> ../../bar
- bar
# The current directory is bar
pnpm link --dir ../foo
- foo
- node_modules
- bar -> ../../bar
- bar
使用案例
使用其本機版本取代已安裝的套件
假設您有一個專案使用 foo
套件。您想要對 foo
進行變更,並在您的專案中測試它們。在此情況下,您可以使用 pnpm link
將 foo
的本機版本連結至您的專案,而 package.json
檔案不會被修改。
cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link --global # link foo globally
cd ~/projects/my-project
pnpm link --global foo # link foo to my-project
您也可以將套件從一個目錄連結至另一個目錄,而不需要使用全域 node_modules
資料夾
cd ~/projects/foo
pnpm install # install dependencies of foo
cd ~/projects/my-project
pnpm link ~/projects/foo # link foo to my-project
在全域新增二進制檔
如果您正在開發一個具有二進制檔的套件,例如 CLI 工具,您可以使用 pnpm link --global
使二進制檔可在系統範圍內使用。這與使用 pnpm install -g foo
相同,但它將使用 foo
的本地版本,而不是從註冊表下載它。
請記住,只有當套件在 package.json
中具有 bin
欄位時,二進制檔才會可用。
cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link --global # link foo globally
pnpm link
和使用 file:
協定的差別是什麼?
當您使用 pnpm link
時,連結的套件會從原始碼中建立符號連結。您可以修改連結套件的原始碼,而變更將反映在您的專案中。使用此方法,pnpm 不會 安裝連結套件的相依項,您必須在原始碼中手動安裝它們。當您必須為連結套件使用特定的套件管理員時,這可能會很有用,例如,如果您想為連結套件使用 npm
,但為您的專案使用 pnpm。
當您在 dependencies
中使用 file:
協定時,連結的套件會硬連結到您的專案 node_modules
,您可以修改連結套件的原始碼,而變更將反映在您的專案中。使用此方法,pnpm 也會安裝連結套件的相依項,覆寫連結套件的 node_modules
。
在處理對等相依項時,建議使用 file:
協定。它可以更好地從專案相依項中解析對等相依項,確保連結相依項正確使用您的主專案中指定的相依項版本,從而產生更一致且預期的行為。
功能 | pnpm link | file: 協定 |
---|---|---|
符號連結/硬連結 | 符號連結 | 硬連結 |
反映原始碼修改 | 是 | 是 |
安裝連結套件的相依性 | 否(需要手動安裝) | 是(覆寫連結套件的 node_modules ) |
使用不同的套件管理員來處理相依性 | 可能(例如,對連結套件使用 npm ) | 否,它將使用 pnpm |