最近在做一个项目时,自己用的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文件(血泪教训)