617 字
3 分鐘
【Node.js】設定 npm 的全域下載位置與環境變數
2025-01-01

為了讓同一個 Windows 系統裡的另一個使用者也能存取一樣的 npm 全域 package,想修改 npm 的全域下載位置。

npm 全域的下載位置#

  先講一下 npm install 會下載的位置:

  • 沒有加 -g:會下載到當前資料夾下的「node_module」資料夾
  • 加了 -g:代表「全域」、在這個作業系統/使用者裡,無論在哪個路徑執行都可以使用
    • 依靠的是「環境變數」

  以下記錄查看、更動 npm install -g 下載的位置相關:

  • 預設下載位置
    • Windows:C:\Users\%USERNAME%\AppData\Roaming\npm
  • 查看目前的下載位置
    Terminal window
    $ npm config get prefix
  • 修改下載位置
    Terminal window
    $ npm config set prefix "(自訂路徑)"
    • 去修改環境變數的「Path」

環境變數#

設定操作流程#

  • 在 Windows,從開始功能表直接搜尋「環境變數」,就能找到「編輯系統環境變數」或是類似名字的東西。
  • 點擊右下角的[環境變數]
  • 選擇想要改變的影響範圍
    • 上面是「使用者變數」,下面是「系統變數」
    • 顧名思義,上面的設定只影響對應使用者(看前面寫誰);在下面的設定則會影響整個 Windows 系統。
  • 這次要找的是「Path」欄位,點擊選中、並點選下面的[編輯]
  • 點擊右邊的[新增],輸入剛剛自訂的路徑
  • 一路點擊[確定]出去

原理#

  • 環境變數的「Path」的意義
    • 當我輸入一個指令,如果當前目錄下沒找到對應的執行檔,請到 Path 的那些目錄裡找
    • 也就是說,在任何路徑執行終端機都可以使用已在 Path 目錄下的執行檔
  • npm 下載到該目錄,並把該目錄設在 Path,這樣就能在任何路徑使用全域下載的 package 了。

補充:我為什麼遇到問題、想改這個設定?#

  在安裝 Node.js 時,如果使用官網的安裝工具、一路下一步,通常就會一起安裝「npm」、並在使用者環境變數設定預設的全域下載路徑。
  但,我遇到的問題是切換到另一個使用者,因為這個新使用者的環境變數裡沒有指向預設全域下載路徑、所以無法使用那些功能;雖然可以去把路徑設在系統環境變數、就能跨使用者使用,但預設路徑在 C:\Users\(舊使用者的 %USERNAME%)\ 底下,總感覺怪怪的。