如何统一前端项目的 Node 版本和包管理器?

在我们日常开发的项目中,可能成员们的机器所使用的Node.js版本不统一:守旧派用12.x、保守用14.x、激进用17.x,项目能否正常跑起来全凭天意,包管理器也是一样,有人习惯用npm、用人习惯用yarn,代码库里经常存在package-lock.json、yarn.lock文件同时存在的情况,更痛的点还是各种奇奇怪怪的问题排查起来完全没有头绪。所以我们要做的是:锁定Node.js版本和包管理器。

一、锁定项目Node版本

通过在项目的package.json中指定engines字段,可限定项目使用的Node版本。下面配置仅允许用户使用14或者16的版本。更多的配置可以参考package.json|npm Docs、semver

// package.json
"engines":{
  "node":"14.x || 16.x"
}

配置之后你会发现,该字段只对yarn生效。那如何对npm也生效呢?在项目根目录下的.npmrc文件中增加如下配置

// .npmrc
engine-strict = true

以上配置完成后,使用npm install的时候,如果是错误的Node.js版本将直接退出

二、锁定包管理器

利用only-allow工具包、npm scripts 快速实现锁定。

步骤一:在项目中npm install only-allow -D

步骤二:在package.json文件中进行配置scripts.preinstall,允许输入的值only-allow npm、only-allow pnpm、only-allow yarn

// package.json
"scripts":{
  "preinstall":"only-allow npm"
}

以上配置完成后,可以再乱用(yarn、npm、pnpm)试试。

posted @ 2022-07-27 14:01  阿彬~  阅读(526)  评论(0编辑  收藏  举报