npm-ls

列出已安裝套件

選擇 CLI 版本

概要

npm ls <package-spec>
alias: list

說明

此指令會將所有已安裝套件的版本列印到 stdout,以及在指定 --all 時的相依套件,並以樹狀結構呈現。

注意:若要取得為何特定套件會包含在樹狀結構中的「由下而上」檢視,請使用 npm explain

位置參數為 name@version-range 識別碼,將會將結果限制為僅包含指定套件的名稱路徑。請注意,巢狀套件也會顯示指定套件的路徑。例如,在 npm 原始碼中執行 npm ls promzard 會顯示

npm@10.5.2 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5

它會列印出額外的、遺失的和無效的套件。

如果專案指定依賴項的 git 網址,這些網址會在 name@version 之後以括號顯示,讓使用者更容易辨識專案的潛在分支。

顯示的樹狀結構是根據套件依賴項的邏輯依賴項樹狀結構,而非 node_modules 資料夾的實體配置。

當以 llla 執行時,它會預設顯示延伸資訊。

注意:設計變更待定

當 npm 建立一個天真地巢狀所有依賴項的 node_modules 資料夾時,npm ls 命令的輸出和行為非常有意義。在這種情況下,磁碟上的邏輯依賴項圖形和套件實體樹狀結構大致相同。

隨著 npm v3 中自動安裝時重複依賴項的出現,ls 輸出已修改為以樹狀結構顯示邏輯依賴項圖形,因為這對大多數使用者來說更有用。但是,如果不使用 npm ls -l,大部分時間都無法顯示套件實際安裝在 何處

隨著 npm v7 中自動安裝 peerDependencies 的出現,這變得更加奇怪,因為 peerDependencies 在依賴項圖形中在邏輯上位於其依賴項的「下方」,但在磁碟上始終位於其位置的下方或上方。

此外,自從 npm 取得 ls 命令(在版本 0.0.2 中!)以來,依賴項圖形已變得更大,成為一般規則。因此,為了避免將過多的內容傾倒到終端機,npm ls 現在僅顯示頂層依賴項,除非提供 --all

目前正在徹底重新檢視此命令的用例、意圖、行為和輸出。預計 npm v8 中至少會對人類可讀的預設 npm ls 輸出進行重大變更。

組態

all

  • 預設:false
  • 類型:布林值

執行 npm outdatednpm ls 時,設定 --all 將顯示所有過期或已安裝的套件,而不僅僅是目前專案直接依賴的套件。

json

  • 預設:false
  • 類型:布林值

是否輸出 JSON 資料,而非一般輸出。

  • npm pkg set 中,它可以在儲存至 package.json 之前,使用 JSON.parse() 來解析設定值。

並非所有 npm 命令都支援。

long

  • 預設:false
  • 類型:布林值

lssearchhelp-search 中顯示延伸資訊。

parseable

  • 預設:false
  • 類型:布林值

輸出寫入標準輸出的指令解析結果。對於 npm search,這將是 tab 分隔的表格格式。

global

  • 預設:false
  • 類型:布林值

在「全域」模式下操作,以便將套件安裝到 prefix 資料夾,而不是當前工作目錄。請參閱 資料夾,以進一步瞭解行為的差異。

  • 套件安裝到 {prefix}/lib/node_modules 資料夾,而不是當前工作目錄。
  • bin 檔案連結到 {prefix}/bin
  • man 頁面連結到 {prefix}/share/man

depth

  • 預設值:如果設定 --all,則為 Infinity,否則為 1
  • 類型:null 或數字

npm ls 遞迴套件時要達到的深度。

如果未設定,npm ls 將只顯示根專案的立即相依項。如果設定 --all,則 npm 預設會顯示所有相依項。

omit

  • 預設值:如果 NODE_ENV 環境變數設定為「生產」,則為「開發」;否則為空。
  • 類型:「開發」、「選用」或「同儕」(可設定多次)

從磁碟上的安裝樹中省略的相依項類型。

請注意,這些相依項仍然會解析並新增到 package-lock.jsonnpm-shrinkwrap.json 檔案中。它們只是不會實際安裝在磁碟上。

如果套件類型同時出現在 --include--omit 清單中,則會將其包含在內。

如果產生的省略清單包含 'dev',則 NODE_ENV 環境變數將設定為 'production',以適用於所有生命週期指令碼。

include

  • 預設值
  • 類型:「生產」、「開發」、「選用」或「同儕」(可設定多次)

允許定義要安裝的相依性類型的選項。

這是 --omit=<type> 的反向操作。

--include 中指定的相依性類型不會被省略,無論在命令列中指定省略/包含的順序如何。

  • 預設:false
  • 類型:布林值

npm ls 搭配使用,將輸出限制為僅連結的套件。

package-lock-only

  • 預設:false
  • 類型:布林值

如果設定為 true,目前的作業只會使用 package-lock.json,忽略 node_modules

對於 update,這表示只會更新 package-lock.json,而不是檢查 node_modules 並下載相依性。

對於 list,這表示輸出將根據 package-lock.json 描述的樹狀結構,而不是 node_modules 的內容。

unicode

  • 預設值:在 Windows 上為 false,在具有 Unicode 區域設定的 Mac/Unix 系統上為 true,由 LC_ALLLC_CTYPELANG 環境變數定義。
  • 類型:布林值

設定為 true 時,npm 在樹狀結構輸出中使用 Unicode 字元。設定為 false 時,它使用 ASCII 字元而不是 Unicode 字形。

workspace

  • 預設值
  • 類型:字串(可以設定多次)

在目前專案設定的工作空間中執行命令,同時根據這個設定選項定義的工作空間進行篩選。

workspace 設定的有效值為

  • 工作空間名稱
  • 工作空間目錄的路徑
  • 父工作空間目錄的路徑(將選取該資料夾中的所有工作空間)

設定為 npm init 命令時,可以設定為尚未存在的資料夾,以建立資料夾並將其設定為專案中的全新工作空間。

此值不會匯出到子程式的環境中。

workspaces

  • 預設值:null
  • 類型:null 或布林值

設定為 true 以在所有設定的工作空間中執行命令。

明確將此設定為 false 將導致 install 等命令完全忽略工作空間。未明確設定時

  • 針對 node_modules 樹狀結構進行操作的指令(安裝、更新等)會將工作區連結到 node_modules 資料夾。 - 執行其他作業的指令(測試、執行、發布等)會在根目錄專案中進行操作,除非workspace 設定檔中指定一個或多個工作區。

此值不會匯出到子程式的環境中。

include-workspace-root

  • 預設:false
  • 類型:布林值

針對指令啟用工作區時,請包含工作區根目錄。

為 false 時,透過 workspace 設定檔指定個別工作區,或透過 workspaces 旗標指定所有工作區,npm 將只針對指定的工作區進行操作,而不會針對根目錄專案進行操作。

此值不會匯出到子程式的環境中。

  • 預設:false
  • 類型:布林值

設定後,file: 協定相依項會打包並安裝為一般相依項,而不是建立符號連結。此選項對工作區沒有影響。

另請參閱