如何在项目中保证node/npm包版本相同?

409 阅读1分钟

最近在做一个项目时,自己用的npm,同事用的yarn,结果合并代码后,npm install就跑不起来了。然后更换node版本、python环境变量,尝试cnpm、pnpm、淘宝镜像等等多种方式,结果这个项目跑起来了,但其他项目又跑不起来了。。。被这个版本问题弄得头大,所以决定学习梳理下这方面的内容。

参考文档: 浅谈项目中node和依赖包的版本管理

1、统一包管理器(only-allow)

首先安装only-allow:

npm i only-allow

之后再package.json里script字段中添加:

{
  "scripts": {
    "preinstall": "npx only-allow npm"
  }
}

这样就可以限制使用npm作为包管理工具。

如果你想限制使用yarn:

{
  "scripts": {
    "preinstall": "npx only-allow yarn"
  }
}

2、限制node或包管理器的版本

同时在package.json里声明:

  "engines": {
    "node":"16.0.0",
    "npm": "^6.0.0"
  }

同时在.npmrc文件中添加:

engine-strict= true

注:可以通过安装nvm,在本地安装多个node版本,解决node版本切换的问题。

3、提交package-lock.json/yarn.lock文件

package-lock.json可以锁定初始安装时包的版本,保证不同时间、不同人员安装依赖包版本是相同的。

注:不要随意修改package-lock.json文件(血泪教训)