npm-publish

發布套件

概要

npm publish <package-spec>

說明

將套件發布到註冊表,以便可以按名稱安裝。

預設情況下,npm 將發布到公用註冊表。這可以透過指定不同的預設註冊表或在名稱中使用 範圍,並結合範圍設定的註冊表(請參閱 package.json)來覆寫。

一個 套件 的詮釋方式與其他指令相同(例如 npm install),而且可以是

  • a) 包含由 package.json 檔案描述的程式之資料夾
  • b) 包含 (a) 的壓縮 tar 檔
  • c) 解析為 (b) 的網址
  • d) 在註冊表上發布的 <名稱>@<版本>(請參閱 註冊表)和 (c)
  • e) 指向 (d) 的 <名稱>@<標籤>(請參閱 npm dist-tag
  • f) 具有滿足 (e) 的「最新」標籤的 <名稱>
  • g) 解析為 (a) 的 <git 遠端網址>

如果套件名稱和版本組合已存在於指定的註冊表,則發布將會失敗。

一旦套件以特定名稱和版本發布,即使使用 npm unpublish 移除,也永遠無法再次使用該特定名稱和版本組合。

npm@5 開始,在發布期間,將會將 tar 檔的 sha1sum 和包含 tar 檔 sha512sum 的完整性欄位提交到註冊表。後續安裝將使用最強的受支援演算法來驗證下載。

類似於 --dry-run,請參閱 npm pack,它會找出要包含的檔案,並將它們打包成要上傳到註冊表的 tar 檔。

套件中包含的檔案

若要查看套件中將包含的內容,請執行 npm pack --dry-run。預設情況下,所有檔案都會包含,但有以下例外

  • 與套件安裝和發行相關的特定檔案始終會包含。例如,package.jsonREADME.mdLICENSE 等。

  • 如果 package.json 中有「檔案」清單,則只會包含指定的檔案。(如果指定目錄,則會遞迴處理並包含其內容,但會套用相同的忽略規則。)

  • 如果存在 .gitignore.npmignore 檔案,則會從套件中排除該檔案及其所有子目錄中的忽略檔案。如果同時存在這兩個檔案,則會忽略 .gitignore,只會使用 .npmignore

    .npmignore 檔案遵循與 .gitignore 檔案相同的模式規則

  • 如果檔案符合特定模式,則永遠不會包含該檔案,除非明確將其新增至 package.json 中的 "files" 清單,或在 .npmignore.gitignore 檔案中使用 ! 規則取消忽略。

  • 符號連結永遠不會包含在 npm 套件中。

請參閱 developers,以取得已發佈套件中所包含內容的完整詳細資料,以及套件建置方式的詳細資料。

設定

標籤

  • 預設值:「最新」
  • 類型:字串

如果您要求 npm 安裝套件,但未指定特定版本,則它會安裝指定的標籤。

此外,如果未提供明確標籤,則會將標籤新增至 npm tag 指令指定的套件@版本。

npm diff 指令使用此標籤時,預設會使用此標籤來擷取 tarball,並與本機檔案進行比較。

存取

  • 預設值:新套件為「公開」,現有套件不會變更目前的層級
  • 類型:null、「受限」或「公開」

如果您不希望您的範圍套件公開可見(且可安裝),請設定 --access=restricted

未設定範圍的套件無法設定為 restricted

注意:這預設為不變更現有套件的目前存取權限。在發布期間指定 restrictedpublic 的值將會變更現有套件的存取權限,其方式與 npm access set status 相同。

乾式執行

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

表示您不希望 npm 進行任何變更,且它只應報告它會執行的動作。這可以傳遞到任何修改您本機安裝的指令中,例如 installupdatededupeuninstall,以及 packpublish

注意:這不受其他網路相關指令採用,例如 dist-tagsowner 等。

一次性密碼

  • 預設值:null
  • 類型:null 或字串

這是來自雙重驗證器的單次密碼。在使用 npm access 發布或變更套件權限時需要它。

如果未設定,且登錄回應因單次密碼的挑戰而失敗,npm 將會在命令列中提示輸入密碼。

工作區

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

啟用在目前專案設定的工作空間的內容中執行指令,同時透過僅執行此設定選項所定義的工作空間來過濾。

workspace 設定的有效值為

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

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

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

工作區

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

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

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

  • node_modules 樹上運作的命令(install、update 等)將連結工作區至 node_modules 資料夾。- 執行其他動作的命令(test、exec、publish 等)將在根目錄專案上運作,除非workspace 設定中指定一個或多個工作區。

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

包含工作區根目錄

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

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

為 false 時,透過 workspace 設定指定個別工作區,或透過 workspaces 旗標指定所有工作區,將導致 npm 僅在指定的工作區上運作,而非根目錄專案。

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

來源

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

從受支援的雲端 CI/CD 系統發布時,套件將公開連結至其建置和發布的位置。

此設定無法與 provenance-file 搭配使用。

來源檔案

  • 預設值:null
  • 類型:路徑

發布時,將使用指定路徑中的來源套件。

此設定無法與 provenance 搭配使用。

另請參閱