【发布时间】:2021-11-26 06:59:55
【问题描述】:
我对整个 CI/CD 世界有点陌生,但每当我在任何节点 js 项目中看到config.yml 文件时,总是有npm ci 而不是npm install。我已经从文档中阅读了一些内容,但我仍然不清楚。有人可以用清晰简洁的语言解释吗?
【问题讨论】:
标签: node.js github npm continuous-integration github-actions
我对整个 CI/CD 世界有点陌生,但每当我在任何节点 js 项目中看到config.yml 文件时,总是有npm ci 而不是npm install。我已经从文档中阅读了一些内容,但我仍然不清楚。有人可以用清晰简洁的语言解释吗?
【问题讨论】:
标签: node.js github npm continuous-integration github-actions
npm install 为您生成 package-lock.json。该文件包含您安装的所有依赖项的确切版本号以及传递依赖项的版本号,所有这些都基于您在 package.json 中定义的内容。但是请注意,在您的 package.json 中,您可以定义以 ^ 或 ~ 开头的版本,这表明您要安装某个依赖项的最新补丁或次要版本。因此,每次运行 npm install 时,您的 package-lock.json 可能最终会包含稍新版本的软件包(如果可用)。
npm ci 另一方面不会生成 package-lock.json 文件。恰恰相反。它要求您的 package-lock.json 已经存在,并且它安装的正是那里列出的版本。这是您要在 CI/CD 管道上运行的命令。这样,您可以确保您的管道使用与您上次在本地使用的完全相同的依赖项,并且可以确认它们对您有效。
【讨论】: