锁定你项目中的node版本,让你的项目有一个稳定且统一的运行环境

1,823 阅读1分钟

在一个项目中,随着时间的推移,node版本在不断更新,但一些依赖库你并不知道它支不支持在新的node版本中运行。为了稳定,通常我们需要在开始时就选定一个兼容性强的node LTS版本,并且在项目中锁定版本。这也是防止后续的开发发生一些由环境引起的问题。

通过nvm来管理版本

如果项目中使用了nvm来进行版本控制,需要在根目录创建一个.nvmrc文件来指定node版本,内容如下:

.nvmrc

v14.19.1

通过package.json中的属性来限制

我们可以通过在package.json中设置engines属性来指定版本范围。npm-package文档

指定node版本的范围

{
  "engines": {
    "node": ">=14.19.1 <=17.9.0"
  }
}

固定为指定版本

{
  "engines": {
    "node": "~14.19.1"
  }
}

.npmrc

前面我们说了在package.json中指定engines属性来限制node版本,这个在yarnpnpm中时有效的。 在配置了engines后,再使用nvm将node版本变为v12.18.3之后再使用yarn来安装依赖,就会报错

image.png

pnpm i也是相似的报错

但是使用npm i并不会按照engines的属性来报错,这是因为在npm中设置了engine-strict默认为false。因此,我们需要创建.npmrc来显式的定义为true,如下

.npmrc

engine-strict=true

这样当node未满足版本要求时,就无法运行npm install