一、如何统一前端项目的node版本和包管理器
开发环境:
- Node.js
- Package Manager [
npm
、yarn
、pnpm
]
痛点问题: 开发人员机器
Node.js
版本不统一:守旧派用12.x
、保守用14.x
、激进用latest
。项目能否正常跑起来全凭天意, 在没有CICD
流水线加持本地npm run build
的场景下线上风险可想而知。有人习惯用
npm
、有人习惯用yarn
, 代码库里面经常会存在package-lock.json
、yarn.lock
文件同时存在的情况,更痛的点还是各种奇奇怪怪问题排查起来没有头绪。 解决方案之一:锁定Node.js
版本和包管理器
1. 锁定项目Node
版本
- 通过在
package.json
中指定engines
字段,可限定项目使用的node
版本。 下面配置仅允许用户使用14
或者16
的版本。更多的配置可以参考package.json | npm Docs 、semver
text// package.json "engines": { "node": "14.x || 16.x" },
- 配置之后你会发现,该字段只对
yarn
生效。那如何对npm
也生效呢?在项目根目录下的.npmrc
文件中增加如下配置
text
// .npmrc
engine-strict = true
- 以上配置完成后,
npm install
试试吧,错误的Node.js
将直接退出
2. 锁定包管理器
- 利用
only-allow
工具包、npm scripts
快速实现锁定。- 步骤一:在项目中
npm install -D only-allow
- 步骤二:在
package.json
文件中进行配置scripts.preinstall
,允许输入的值only-allow npm
、only-allow pnpm
、only-allow yarn
text// package.json "scripts": { "preinstall": "only-allow npm", ... }
- 以上配置完成后,可以再乱用[
npm
、yarn
、pnpm
]试试
- 步骤一:在项目中