npm-pkg

管理您的 package.json

選擇 CLI 版本

概要

npm pkg set <key>=<value> [<key>=<value> ...]
npm pkg get [<key> [<key> ...]]
npm pkg delete <key> [<key> ...]
npm pkg set [<array>[<index>].<key>=<value> ...]
npm pkg set [<array>[].<key>=<value> ...]
npm pkg fix

說明

自動化管理 package.json 檔案的指令。 npm pkg 提供 3 個不同的子指令,讓您修改或擷取 package.json 中特定物件金鑰的值。

擷取和設定欄位的語法是您在 package.json 中找到的巢狀物件屬性的點分隔表示法,這與 npm view 中用於從登錄清單擷取資訊的表示法相同,以下提供更多如何使用的範例。

傳回的值總是採用json 格式。

  • npm pkg get <field>

    擷取 package.json 檔案中定義的值 key

    例如,若要擷取目前套件的名稱,您可以執行

    npm pkg get name

    也可以同時擷取多個值

    npm pkg get name version

    你可以透過句點分隔來檢視子欄位。若要擷取測試 script 值,你可以執行以下指令

    npm pkg get scripts.test

    對於陣列欄位,要求非數字欄位將傳回清單中物件的所有值。例如,若要取得套件的所有貢獻者電子郵件,你可以執行

    npm pkg get contributors.email

    你也可以在方括號中使用數字索引來特別選取陣列欄位中的項目。若要取得清單中第一個貢獻者的電子郵件地址,你可以執行

    npm pkg get contributors[0].email

    對於複雜欄位,你也可以在方括號中指定一個屬性來特別選取子欄位。這對於 exports 物件特別有幫助

    npm pkg get "exports[.].require"
  • npm pkg set <field>=<value>

    根據 field 值在你的 package.json 中設定 value。儲存到你的 package.json 檔案時,會使用與 npm install 和其他觸及 package.json 檔案的 cli 指令相同的規則,確保尊重現有的縮排,並在將值儲存到檔案之前套用一些驗證。

    用於從套件中擷取值的相同語法也可以用於定義新屬性或覆寫現有屬性,以下是使用句點分隔語法編輯 package.json 檔案的一些範例。

    在你的 package.json 中定義一個名為 mynewcommand 的新 bin,指向檔案 cli.js

    npm pkg set bin.mynewcommand=cli.js

    一次設定多個欄位也是可行的

    npm pkg set description='Awesome package' engines.node='>=10'

    也可以新增到陣列值,例如新增一個新的貢獻者項目

    npm pkg set contributors[0].name='Foo' contributors[0].email='foo@bar.ca'

    你也可以使用特殊空方括號表示法將項目附加到陣列的結尾

    npm pkg set contributors[].name='Foo' contributors[].name='Bar'

    也可以在將值儲存到 package.json 檔案之前將其解析為 json,例如為了設定 "private": true 屬性

    npm pkg set private=true --json

    它也允許將值儲存為數字

    npm pkg set tap.timeout=60 --json
  • npm pkg delete <key>

    從你的 package.json 中刪除一個 key

    用於從套件設定值的相同語法也可以用於移除現有的值。例如,若要移除一個名為 build 的 script

    npm pkg delete scripts.build
  • npm pkg fix

    自動修正 package.json 中的常見錯誤。npm 已在 publish 期間執行此操作,這會導致 package.json 檔案內容與 npm 在安裝期間使用的清單產生細微(大多無害)的差異。

工作區支援

你可以使用 workspaceworkspaces 設定選項,在已設定的工作空間中設定/取得/刪除項目。

例如,在專案的所有已設定工作空間中設定 funding

npm pkg set funding=https://example.com --ws

使用 npm pkg get 從已設定的工作空間中擷取資訊時,傳回的結果會採用 json 格式,其中頂層金鑰為每個工作空間的名稱,這些金鑰的值會是從每個已設定工作空間傳回的結果值,例如

npm pkg get name version --ws
{
"a": {
"name": "a",
"version": "1.0.0"
},
"b": {
"name": "b",
"version": "1.0.0"
}
}

設定

force

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

移除各種針對不幸的副作用、常見錯誤、不必要的效能降低和惡意輸入的防護措施。

  • 允許在全域安裝中覆寫非 npm 檔案。
  • 允許 npm version 命令在不乾淨的 git 儲存庫上執行。
  • 允許使用 npm cache clean 刪除快取資料夾。
  • 允許安裝具有 engines 宣告(需要不同版本的 npm)的套件。
  • 允許安裝具有 engines 宣告(需要不同版本的 node)的套件,即使已啟用 --engine-strict
  • 允許 npm audit fix 安裝超出你所述依賴範圍(包括 SemVer-major 變更)的模組。
  • 允許取消發佈已發佈套件的所有版本。
  • 允許在根專案中安裝衝突的 peerDependencies。
  • npm init 期間隱含設定 --yes
  • 允許在 npm pkg 中覆寫現有值
  • 允許取消發佈整個套件(不只單一版本)。

如果你對自己想做的事沒有明確的想法,強烈建議你不要使用這個選項!

json

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

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

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

並非所有 npm 指令都支援。

workspace

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

在當前專案的已設定工作區環境中執行指令,同時根據此設定選項所定義的工作區進行篩選。

workspace 設定的有效值包括

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

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

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

workspaces

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

設定為 true 以在所有已設定工作區的環境中執行指令。

明確設定為 false 會導致 install 等指令完全忽略工作區。未明確設定時

  • 針對 node_modules 樹狀結構進行操作的指令(install、update 等)會將工作區連結到 node_modules 資料夾中。- 執行其他操作的指令(test、exec、publish 等)會在根目錄專案中進行操作,除非workspace 設定中指定一個或多個工作區。

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

另請參閱

在 GitHub 上編輯此頁面
3 位貢獻者emmanuel-ferdmanwraithgarlukekarrys
上次編輯者為 emmanuel-ferdman,編輯時間為 2023 年 7 月 25 日