【问题标题】:What exactly does npm ci command does ? why is it used in all ci pipelines instead of npm install?npm ci 命令到底是做什么的?为什么在所有 ci 管道中使用它而不是 npm install?
【发布时间】:2021-11-26 06:59:55
【问题描述】:

我对整个 CI/CD 世界有点陌生,但每当我在任何节点 js 项目中看到config.yml 文件时,总是有npm ci 而不是npm install。我已经从文档中阅读了一些内容,但我仍然不清楚。有人可以用清晰简洁的语言解释吗?

【问题讨论】:

    标签: node.js github npm continuous-integration github-actions


    【解决方案1】:

    npm install 为您生成 package-lock.json。该文件包含您安装的所有依赖项的确切版本号以及传递依赖项的版本号,所有这些都基于您在 package.json 中定义的内容。但是请注意,在您的 package.json 中,您可以定义以 ^~ 开头的版本,这表明您要安装某个依赖项的最新补丁或次要版本。因此,每次运行 npm install 时,您的 package-lock.json 可能最终会包含稍新版本的软件包(如果可用)。

    npm ci 另一方面不会生成 package-lock.json 文件。恰恰相反。它要求您的 package-lock.json 已经存在,并且它安装的正是那里列出的版本。这是您要在 CI/CD 管道上运行的命令。这样,您可以确保您的管道使用与您上次在本地使用的完全相同的依赖项,并且可以确认它们对您有效。

    【讨论】:

    • 感谢您提供如此精彩而清晰的解释
    • package-lock.json 还包含从 ~ 或 ^ 开始的版本。这是否意味着每次运行 npm ci 时,可能会包含更新版本的软件包?
    猜你喜欢
    • 2019-03-01
    • 1970-01-01
    • 2013-05-01
    • 2022-09-23
    • 1970-01-01
    • 2020-08-08
    • 2020-02-17
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多