Node 在持续集成:持续部署中使用 npm ci

8 min read

npm ci命令是Node.js包管理器npm的一个命令,用于在安装项目依赖时提供更快速、更可靠的方式,特别是在持续集成(CI)环境中。这个命令在功能上与npm install类似,但有几个关键区别使它在某些情况下更适合使用:

  1. 速度更快npm ci通常比npm install更快,因为它跳过了某些面向用户的功能,比如修改package-lock.jsonnpm-shrinkwrap.json文件。

  2. 更严格:它要求项目根目录有package-lock.jsonnpm-shrinkwrap.json文件。如果没有这些文件,命令会失败。这确保了安装的依赖与这些锁文件严格匹配,提高了一致性。

  3. 不会修改锁文件:在安装依赖时,npm ci不会更改package.jsonpackage-lock.json文件。这对于确保在所有安装和部署环境中都使用相同的依赖版本非常重要。

  4. 清理node_modules:在安装新依赖之前,npm ci会自动删除现有的node_modules目录(如果存在的话),确保没有旧版本的或不必要的依赖被保留。

使用场景

  • 持续集成/持续部署(CI/CD):在CI/CD管道中,您希望每次构建都尽可能一致,npm ci提供了这种一致性。
  • 生产部署:在生产环境中部署应用时,使用npm ci可以确保根据package-lock.json文件准确安装依赖,减少意外问题。
  • 团队开发:当多个开发者或团队在同一个项目上工作时,使用npm ci可以帮助确保每个人都在使用相同的依赖版本。

要使用npm ci,只需在带有package-lock.jsonnpm-shrinkwrap.json的项目根目录中运行它。如果您在运行npm ci时遇到与npm i类似的GLIBC版本问题,那么问题的根源可能是Node.js版本与操作系统的兼容性,而不是npm命令本身。在这种情况下,您可能需要考虑更换Node.js版本或更新操作系统。