限定项目的 Node.js 版本
限定项目的 Node.js 版本
限定项目运行所需的 Node.js 版本可保证项目在一个稳定可预期的环境中运行,减少不必要的故障。甚至有些依赖库只能工作于某些版本下。同时,不加以限制的话,在多人合作的项目中恐怕会引起环境不一致带来的兼容性问题,部署上也会存在相同的问题。
为项目指定 Node.js 的版本可通过版本管理器,或者通过 package.json 中添加相应属性来实现。
nvm
管理 Node.js 的版本最好可通过相应的版本管理器来完成,比如 nvm。用法在 nvm --help 中描述得很详尽。
通过在项目根目录创建一个 .nvmrc,其中写上需要的 Node.js 版本号。这个版本号不一定是数字,可以是 nvm 能够理解的其他别称,详见 nvm --help 中对 的描述。
Note: refers to any version-like string nvm understands. This includes:
full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)
default (built-in) aliases: node, stable, unstable, iojs, system
custom aliases you define with nvm alias foo
-- nvm 帮助信息中对 版本号的描述
示例:
将当前版本写入
$ node -v > .nvmrc
使用 5.9 的版本
$ echo "5.9" > .nvmrc
使用最新的 LTS (Long-term Support) 版本
$ echo "lts/*" > .nvmrc
使用最新的 Node.js 版本
$ echo "node" > .nvmrc
在执行如下这些命令时,会自动读取 .nvmrc 中版本号以应用上,
nvm use
nvm install
nvm exec
nvm run
nvm which
这样协作者将项目 clone 下来后直接 nvm use 就直接切换到相应版本,如果本地没有安装,nvm install 则会安装相应版本。
engines
根据 npm-package 文档的描述,可以在 package.json 中通过 engines 属性指定 Node.js 的版本。
{
"engines": { "node": ">=0.10.3 <0.12" }
}
甚至可以限定 npm 的版本:
{
"engines": { "npm": "~1.0.20" }
}
有趣的是,在执行 npm install 安装项目依赖时,这个设置并不生效,相反,非官方的 yarn 是有效(respect)的,它会检查这里的设置,如果当前环境与所需不匹配,直接报错,这是我们期望的结果:
yarn 执行安装前检查版本不对时抛错
yarn 执行安装前检查版本不对时抛错
所以推荐使用 yarn。
如果使用的 npm 怎么办呢。只能手动写脚本来做这个事情了。
$ npm i -D semver
$ touch checkver.js
实现我们检查版本的逻辑:
checkver.js
const semver = require("semver");
const { engines } = require("./package");
const version = engines.node;
if (!semver.satisfies(process.version, version)) {
console.error(Required node version ${version}, got: ${process.version}.
);
process.exit(1);
}
添加 postinstall 命令到 package.json:
{
"scripts": {
"postinstall": "node ./checkver.js"
}
}
运行效果:
使用 postinstall 执行 Node.js 版本的检查
使用 postinstall
执行 Node.js 版本的检查
为什么使用 postinstall 呢,如果使用 preinstall 岂不是更好,这样在执行安装前就能检查。但这里我们依赖了 semver 这个 npm 包,所以需要让安装先执行。
相关资源
creationix/nvm
How to Lock down Your Project’s Node Version Using .Nvmrc Or engines.
npm-package.json
原文地址https://www.cnblogs.com/Wayou/p/restrict_node_version.html
限定项目的 Node.js 版本相关推荐
- 详细记录基于vue+nodejs+mongodb构建的商城学习(四)基于项目的node.js开发后端的学习与梳理总结...
前置: 本系列文章是一个本人边学习边梳理的学习笔记,俗话说好脑袋不如烂笔头,再好的记忆力时间长了也会有细节忘记,本项目选择的前端框架是vue,后端开发使用是node.js,数据库使用的是mongodb ...
- 以太坊测试链环境node.js版本
为什么80%的码农都做不了架构师?>>> MAC升级Nodejs和Npm到最新版 第一步,先查看本机node.js版本: node -v 第二步,清除node.js的cache ...
- 使用napi node_使用Napi / node-addon-api和Cmake的独立于Node.js版本的C ++ Native Addon
使用napi node This is a tutorial for c++ Node-addon-api / Napi addon using cmake.Napi makes it indepen ...
- Eclipse修改web项目的jdk编译版本
Eclipse修改web项目的jdk编译版本 有的时候因为项目需要的原因我们需要指定web项目的编译版本,下边是两种修改编译版本的方法 1.修改所有项目的默认jdk版本 点击Window->Pr ...
- 部署onlyoffice(node.js版本)之野蛮施工法
OnlyOffice,在线的文档编辑工具,可以在浏览器上创建WORD,EXCEL,PPT,并且实现在线编辑功能. 第一步,使用docker安装OnlyOffice/DocumentServer. su ...
- VUE3学习笔记(二)VUE2 node.js 版本高
今天在高版本node.js系统运行原来的vue2项目,出现如下错误: 网上查询说的node.js版本高导致,需要输入如下命令就可以解决! 在命令行输入: $env:NODE_OPTIONS=" ...
- 使用nvm管理node.js版本以及更换npm淘宝镜像源
目录 1,前言 2,安装nvm 3,nvm的使用 4,错误处理 5,修改npm默认镜像源 6,win10下cnpm报错 1,前言 注意:此教程仅限Windows,Mac可能不适用 在我们的日常开发中可 ...
- 【使用 node 版本切换工具 nvm 切换 node.js 版本】
使用 node 版本切换工具 nvm 切换 node.js 版本 文章目录 使用 node 版本切换工具 nvm 切换 node.js 版本 前言 一.nvm是什么? 二.使用步骤 1.卸载原有 no ...
- 查看Vue版本 node.js版本vue-cli版本
查看node.js版本 node -v 查看vue版本 npm list vue 或者进入项目中package.json文件直接查看 查看Vue-cli版本 vue -V 或者 vue --versi ...
最新文章
- win10 远程登录 无密码用户
- 最有效的萨克斯弱音器_1990到2016年全球自杀数据公布,中国自杀死亡率下降最显著!...
- 分享一些看了就能用的面试技巧
- vue3代码的组织形式
- Java数据结构-约瑟夫问题(Joseph环)
- 网络安全实验室-解密关1
- 2022年北京航空航天大学计算机考研复试分数线
- 数据表对应关系(一对一、一对多、多对多)
- 关于对比型数据与分布型数据的图表可视化
- pytorch 中的 forward 的使用与解释
- 各种数据类型的取值范围(总结全)
- vlc web 登录账号_使用VLC Activex插件做网页版视频播放器
- Android Studio入学1-3:通过okhttp连接服务器
- android 六边形布局,Android自定义View——一个可定制的六边形阵列
- 中小学python编程教学-中小学青少年编程课程
- 渗透测试-中间件日志包含绕过和php文件读写包含
- 2020数学建模参加后感想
- 西西吹雪:从程序员到项目经理(一)
- 说说zookeeper一般都有哪些使用场景?
- win10笔记本电脑分享热点无法选择2.4ghz或5ghz的解决方法