網站導覽
目錄
npm-ci
選擇 CLI 版本
目錄
概要
npm cialiases: clean-install, ic, install-clean, isntall-clean
說明
此指令類似於 npm install
,但它用於自動化環境,例如測試平台、持續整合和部署,或任何您想要確保執行相依性清除安裝的情況。
使用 npm install
和 npm ci
的主要差異如下
- 專案必須有現有的
package-lock.json
或npm-shrinkwrap.json
。 - 如果封鎖中的相依性與
package.json
中的相依性不符,npm ci
會傳回錯誤訊息,而不是更新封鎖。 npm ci
一次只能安裝整個專案:無法使用此指令新增個別相依性。- 如果已存在
node_modules
,npm ci
開始安裝之前會自動將其移除。 - 它絕不會寫入
package.json
或任何封鎖:安裝基本上是凍結的。
注意:如果您透過執行 npm install
來建立 package-lock.json
檔案,並使用會影響相依性樹狀結構的旗標,例如 --legacy-peer-deps
或 --install-links
,您必須提供相同的旗標給 npm ci
,否則可能會遇到錯誤。執行此操作的簡單方法是執行,例如 npm config set legacy-peer-deps=true --location=project
,並將 .npmrc
檔案提交至您的儲存庫。
範例
確保您有封鎖和最新的安裝
$ cd ./my/npm/project$ npm installadded 154 packages in 10s$ ls | grep package-lock
在該專案中執行 npm ci
$ npm ciadded 154 packages in 5s
設定 Travis CI 使用 npm ci
而不是 npm install
來建置
# .travis.ymlinstall:- npm ci# keep the npm cache around to speed up installscache:directories:- "$HOME/.npm"
設定
install-strategy
- 預設值:
hoisted
- 類型:
hoisted
、nested
、shallow
或linked
設定安裝 node_modules 中套件的策略。hoisted(預設值):在頂層安裝非重複套件,並在目錄結構中視需要重複安裝。nested(以前為 --legacy-bundling):就地安裝,不提升。shallow(以前為 --global-style):僅在頂層安裝直接相依性。linked(實驗性質):安裝在 node_modules/.store 中,就地連結,未提升。
legacy-bundling
- 預設值:false
- 類型:布林值
- 已棄用:此選項已棄用,建議使用
--install-strategy=nested
不要在 node_modules
中提升封裝安裝,而應以依賴它們的方式安裝封裝。這可能會導致非常深的目錄結構和重複的封裝安裝,因為沒有重複資料刪除。設定 --install-strategy=nested
。
global-style
- 預設值:false
- 類型:布林值
- 已棄用:此選項已棄用,建議使用
--install-strategy=shallow
僅在頂層 node_modules
中安裝直接依賴項,但在更深的依賴項中提升。設定 --install-strategy=shallow
。
omit
- 預設值:如果
NODE_ENV
環境變數設定為「production」,則為「dev」,否則為空。 - 類型:「dev」、「optional」或「peer」(可以設定多次)
從磁碟上的安裝樹中省略的依賴項類型。
請注意,這些依賴項仍然會解析並新增到 package-lock.json
或 npm-shrinkwrap.json
檔案中。它們只是不會實際安裝在磁碟上。
如果封裝類型同時出現在 --include
和 --omit
清單中,則會包含該類型。
如果產生的省略清單包含 'dev'
,則 NODE_ENV
環境變數將設定為 'production'
,以適用於所有生命週期指令碼。
include
- 預設值
- 類型:「prod」、「dev」、「optional」或「peer」(可以設定多次)
允許定義要安裝的依賴項類型的選項。
這是 --omit=<type>
的反向操作。
在 --include
中指定的依賴項類型不會被省略,無論在命令列中指定省略/包含的順序為何。
strict-peer-deps
- 預設值:false
- 類型:布林值
如果設定為 true
,且未設定 --legacy-peer-deps
,則任何衝突的 peerDependencies
都會視為安裝失敗,即使 npm 可以根據非對等依賴項關係合理猜測適當的解析方式。
預設情況下,依賴項圖中深層的衝突 peerDependencies
將使用最近的非對等依賴項規格解析,即使這樣做會導致某些封裝接收超出其封裝的 peerDependencies
物件中設定的範圍的對等依賴項。
執行此類覆寫時,會印出警告,說明衝突和涉及的封裝。如果設定 --strict-peer-deps
,則此警告會視為失敗。
foreground-scripts
- 預設:
false
,除非使用npm pack
或npm publish
,預設為true
- 類型:布林值
執行已安裝套件的前景處理序中的所有建置指令碼(即 preinstall
、install
和 postinstall
),與主要 npm 處理序共用標準輸入、輸出和錯誤。
請注意,這通常會使安裝執行速度變慢,且會產生更多雜訊,但對於除錯很有用。
ignore-scripts
- 預設值:false
- 類型:布林值
如果為 true,npm 就不會執行 package.json 檔案中指定的指令碼。
請注意,明確用於執行特定指令碼的命令,例如 npm start
、npm stop
、npm restart
、npm test
和 npm run-script
,如果設定 ignore-scripts
,仍會執行其預期的指令碼,但不會執行任何前置或後置指令碼。
audit
- 預設:true
- 類型:布林值
當「true」時,會將稽核報告與目前的 npm 命令一起提交至預設註冊表和所有為範圍設定的註冊表。請參閱 npm audit
的文件,以了解提交的詳細資訊。
bin-links
- 預設:true
- 類型:布林值
指示 npm 為套件可執行檔建立符號連結(或 Windows 上的 .cmd
shim)。
設定為 false 以不執行此動作。這可以用於解決某些檔案系統不支援符號連結的事實,即使在表面上是 Unix 系統。
fund
- 預設:true
- 類型:布林值
當「true」時,會在每次 npm install
結束時顯示訊息,確認尋找資金的相依性數量。請參閱 npm fund
以取得詳細資訊。
dry-run
- 預設值:false
- 類型:布林值
表示您不想讓 npm 做任何變更,且它應該只回報它會做什麼。這可以傳遞到任何修改您本機安裝的指令中,例如 install
、update
、dedupe
、uninstall
,以及 pack
和 publish
。
注意:這不會受到其他網路相關指令的尊重,例如 dist-tags
、owner
等。
workspace
- 預設值
- 類型:字串(可設定多次)
啟用在目前專案設定的工作空間的內容中執行指令,同時透過只執行此設定選項所定義的工作空間來進行篩選。
下列為 workspace
設定的有效值
- 工作空間名稱
- 工作空間目錄的路徑
- 父工作空間目錄的路徑(將會選取該資料夾中的所有工作空間)
當設定給 npm init
指令時,這可能會設定給尚未存在的資料夾,以建立資料夾並將其設定為專案中的全新工作空間。
此值不會匯出到子程式的環境中。
workspaces
- 預設值:null
- 類型:null 或布林值
設定為 true 以在所有設定的工作空間中執行指令。
明確地將此設定為 false 將會導致像 install
這樣的指令完全忽略工作空間。當未明確設定時
- 作用於
node_modules
樹狀結構的指令(install、update 等)會將工作空間連結到node_modules
資料夾中。- 作用於其他事項的指令(test、exec、publish 等)會作用於根專案,除非在workspace
設定中指定一個或多個工作空間。
此值不會匯出到子程式的環境中。
include-workspace-root
- 預設值:false
- 類型:布林值
當工作空間對指令啟用時,包含工作空間根目錄。
當為 false 時,透過 workspace
設定指定個別工作空間,或透過 workspaces
旗標指定所有工作空間,將會導致 npm 只作用於指定的這些工作空間,而不是根專案。
此值不會匯出到子程式的環境中。
install-links
- 預設值:false
- 類型:布林值
設定檔案時:通訊協定相依項將會打包並安裝為一般相依項,而非建立符號連結。此選項對工作空間沒有影響。