目錄
npm-init
選擇 CLI 版本
目錄
概要
npm init <package-spec> (same as `npx <package-spec>`)npm init <@scope> (same as `npx <@scope>/create`)aliases: create, innit
說明
npm init <initializer>
可用來設定新的或現有的 npm 套件。
initializer
在此情況下是一個名為 create-<initializer>
的 npm 套件,它將由 npm-exec
安裝,然後執行其主要 bin -- 預計會建立或更新 package.json
並執行任何其他與初始化相關的操作。
init 指令會轉換為對應的 npm exec
操作,如下所示
npm init foo
->npm exec create-foo
npm init @usr/foo
->npm exec @usr/create-foo
npm init @usr
->npm exec @usr/create
npm init @usr@2.0.0
->npm exec @usr/create@2.0.0
npm init @usr/foo@2.0.0
->npm exec @usr/create-foo@2.0.0
如果省略初始化器(僅呼叫 npm init
),init 將回歸到舊版 init 行為。它會詢問你一系列問題,然後為你撰寫一個 package.json。它會嘗試根據現有欄位、相依關係和選取的選項做出合理的猜測。它嚴格是累加的,因此它會保留任何已設定的欄位和值。你也可以使用 -y
/--yes
完全略過問卷。如果你傳遞 --scope
,它將建立一個範圍套件。
注意:如果使用者已在全域安裝 create-<initializer>
套件,npm init
會使用該套件。如果你希望 npm 使用最新版本,或指定其他特定版本,你必須明確指定
npm init foo@latest
# 從註冊中心擷取並執行最新的create-foo
npm init foo@1.2.3
# 特別執行create-foo@1.2.3
轉發其他選項
任何其他選項都會直接傳遞至指令,因此 npm init foo -- --hello
會對應到 npm exec -- create-foo --hello
。
為了更清楚說明選項是如何轉送的,以下是一個更進階的範例,顯示傳遞至 npm cli 和建立套件的選項,以下兩個指令是等效的
npm init foo -y --registry=<url> -- --hello -a
npm exec -y --registry=<url> -- create-foo --hello -a
範例
使用 create-react-app
建立一個新的 React 專案
$ npm init react-app ./my-react-app
使用 create-esm
建立一個新的相容於 esm
的套件
$ mkdir my-esm-lib && cd my-esm-lib$ npm init esm --yes
使用舊版 init 產生一個純粹的 package.json
$ mkdir my-npm-pkg && cd my-npm-pkg$ git init$ npm init
在不詢問任何問題的情況下產生
$ npm init -y
工作區支援
你可以使用 workspace
設定選項,在你的專案中建立一個新的工作區。當使用 npm init -w <dir>
時,cli 會建立預期的資料夾和樣板,同時也會在你的專案 package.json
的 "workspaces": []
屬性中加入一個參考,以確保新產生的 工作區 正確設定為工作區。
假設有一個沒有工作區的專案,例如
.+-- package.json
你可以使用舊版 init 產生一個新的工作區
$ npm init -w packages/a
這會產生一個新的資料夾和 package.json
檔案,同時也會更新你的頂層 package.json
,加入對這個新工作區的參考
.+-- package.json`-- packages`-- a`-- package.json
工作區 init 也支援 npm init <initializer> -w <dir>
語法,遵循本頁面開頭的 說明 區段中說明的相同規則集。類似於使用 create-react-app
建立新的 React 專案的先前範例,下列語法會確保在專案中建立新的 React 應用程式,並將其作為巢狀 工作區,並設定 package.json
以將其識別為巢狀工作區
npm init -w packages/my-react-app react-app .
這會確保如預期般產生您的 React 應用程式,需要考慮的一項重要事項是 npm exec
將在該工作區新建立的資料夾中執行,這就是為什麼在這個範例中,初始化器會使用初始化器名稱,後面加上一個點來表示該內容中的目前目錄,例如:react-app .
.+-- package.json`-- packages+-- a| `-- package.json`-- my-react-app+-- README+-- package.json`-- ...
組態
init-author-name
- 預設值:""
- 類型:字串
套件作者名稱的 npm init
應預設使用的值。
init-author-url
- 預設值:""
- 類型:"" 或 URL
套件作者首頁的 npm init
應預設使用的值。
init-license
- 預設值:"ISC"
- 類型:字串
套件授權的 npm init
應預設使用的值。
init-module
- 預設值: "~/.npm-init.js"
- 類型:路徑
由 npm init
指令載入的模組。請參閱 init-package-json 模組文件,以取得更多資訊,或 npm init。
init-version
- 預設值:"1.0.0"
- 類型:SemVer 字串
套件版本號碼的 npm init
應預設使用的值,如果尚未在 package.json 中設定。
yes
- 預設值:null
- 類型:null 或布林值
自動回答 npm 可能在指令列上列印的任何提示。
force
- 預設值:false
- 類型:布林值
移除各種防護措施,以避免產生不幸的副作用、常見錯誤、不必要的效能降低和惡意輸入。
- 允許在全域安裝中覆寫非 npm 檔案。
- 允許
npm version
命令在不乾淨的 git 儲存庫上執行。 - 允許使用
npm cache clean
刪除快取資料夾。 - 允許安裝具有需要不同版本 npm 的
engines
宣告的套件。 - 允許安裝具有需要不同版本
node
的engines
宣告的套件,即使已啟用--engine-strict
。 - 允許
npm audit fix
安裝超出您所述依賴範圍的模組(包括 SemVer 主要變更)。 - 允許取消發布已發布套件的所有版本。
- 允許在根專案中安裝衝突的 peerDependencies。
- 在
npm init
期間隱含設定--yes
。 - 允許在
npm pkg
中覆寫現有值 - 允許取消發布整個套件(不只單一版本)。
如果您不清楚要執行什麼操作,強烈建議您不要使用此選項!
scope
- 預設值:目前專案的範圍(如果有)或 ""
- 類型:字串
將作業與範圍登錄相關聯。
在登入或登出私人登錄時很有用
# log in, linking the scope to the custom registrynpm login --scope=@mycorp --registry=https://registry.mycorp.com# log out, removing the link and the auth tokennpm logout --scope=@mycorp
這將導致 @mycorp
映射到登錄,以供未來根據 @mycorp/package
模式指定的套件安裝。
這還會導致 npm init
建立範圍套件。
# accept all defaults, and create a package named "@foo/whatever",# instead of just named "whatever"npm init --scope=@foo --yes
workspace
- 預設值
- 類型:字串(可以設定多次)
啟用在目前專案設定的工作空間的內容中執行命令,同時根據只執行此設定選項定義的工作空間進行篩選。
workspace
設定的有效值為
- 工作空間名稱
- 工作空間目錄的路徑
- 指向父工作區目錄的路徑(將導致選取該資料夾中的所有工作區)
當設定給 npm init
指令時,這可能會設定給尚未存在的某個工作區的資料夾,以建立該資料夾並將其設定為專案中的全新工作區。
此值不會匯出到子程序的環境中。
workspaces
- 預設值:null
- 類型:null 或布林值
設定為 true 以在所有已設定工作區的內容中執行指令。
將此值明確設定為 false 會導致指令(例如 install
)完全忽略工作區。未明確設定時
- 對
node_modules
樹狀結構進行操作的指令(安裝、更新等)會將工作區連結到node_modules
資料夾。 - 對其他事項進行操作的指令(測試、執行、發佈等)會在根專案上執行,除非在workspace
設定中指定一個或多個工作區。
此值不會匯出到子程序的環境中。
workspaces-update
- 預設值:true
- 類型:布林值
如果設定為 true,npm cli 會在可能將已安裝的工作區變更到 node_modules
資料夾的操作後執行更新。
include-workspace-root
- 預設值:false
- 類型:布林值
當為某個指令啟用工作區時,包含工作區根目錄。
如果為 false,則透過 workspace
設定指定個別工作區,或透過 workspaces
旗標指定所有工作區,將導致 npm 僅對指定的工作區執行操作,而不對根專案執行操作。
此值不會匯出到子程序的環境中。