加载中...
如何锁定项目的node版本
发表于:2020-09-03 | 分类: 后端

在一个项目中,随着时间的推移,一些依赖库可能只能工作于当时安装时所采用的 node 版本。这时再使用新版本 node 时就无法保证项目在一个稳定的环境中运行,甚至是无法运行。为了稳定,通常我们需要在开始时就选定一个兼容性强的 node LTS 版本,并且在项目中锁定版本。

.nvmrc

如果项目中使用了 nvm 来进行版本控制,需要在根目录创建一个[.nvmrc](https://github.com/nvm-sh/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.8.3 之后再使用yarn来安装依赖,就会报错
image.png

pnpm i也是相似的报错

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

.npmrc

engine-strict=true

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

上一篇:
React Router中HashRouter和BrowserRouter的区别
下一篇:
var、let、const原理
本文目录
本文目录