命令 npm ci –omit=dev –ignore-scripts 的用途

前言

那天在看 parse-dashboardDockerfile 時,看到了 RUN npm ci --omit=dev --ignore-scripts 這條命令,順手查了一下它的作用。

說明

命令 npm cinpm install 類似,都可以用於安裝 Node.js 專案的依賴,但是兩者的工作方式略有不同,一般來說開發時常使用 npm install 命令,而在部署 CI/CD 環境或是生產環境時則更傾向使用 npm ci 命令。主要有以下原因:

  • 安裝速度更快npm ci 是一次性清除並安裝所有依賴,比 npm install 更快速,因為它直接使用 package-lock.json 文件,而不進行額外的依賴解析。
  • 確保一致性npm ci 嚴格按照 package-lock.json 文件的內容安裝依賴,保證了在不同環境中安裝的依賴版本完全一致。它不會更改或更新 package-lock.json 文件中的內容。
  • 高效的 CI/CD 工具npm ci 會在安裝前刪除整個 node_modules 文件夾,這確保了乾淨的安裝環境,因此非常適合自動化建構環境。

--omit=dev 參數,則會在安裝依賴時,忽略開發依賴(devDependencies);由於只需要安裝執行階段的必需依賴,而不包含用於開發和測試的依賴,從而減少了安裝時間和空間佔用。


$ npm ci --omit=dev --ignore-scripts

在上述命令中:

  • npm ci:用於清除並重新安裝所有依賴。與 npm install 不同,它會嚴格按照 package-lock.json 文件中指定的版本安裝,確保一致的依賴樹。
  • --omit=dev:跳過 devDependencies,只安裝 dependencies 中指定的依賴。適合生產環境的部署需求。
  • --ignore-scripts:忽略在安裝過程中定義的所有 scripts。這些 scripts 通常包含在 package.json 文件中的 scripts 欄位下,例如 preinstallpostinstallprepare 等。