0

0

NVS —— js 实现的node版本管理工具

雪夜

雪夜

发布时间:2025-09-03 09:03:21

|

1011人浏览过

|

来源于php中文网

原创

NVS (Node Version Switcher)

nvs 是一个跨平台的 node.js 的版本切换工具,并且 nvs 本身是用node.js[1]编写的。

这个工具显然是受到其他 Node.js 版本管理器工具的启发,特别是nvm[2],它借鉴了很多思想和一些命令行语法。

以下是基本的设置说明。有关设置 NVS 的更多细节和选项,请参阅设置页面。[3]

Windows

windows 的 MSI 安装包可以从NVS releases page on GitHub[4]这里获得。你也可以通过chocolatey[5]安装:

代码语言:javascript代码运行次数:0运行复制
choco install nvs
Mac, Linux

指定安装路径,克隆 repo,并输入安装命令:

代码语言:javascript代码运行次数:0运行复制
export NVS_HOME="$HOME/.nvs"git clone https://gitee.com/wsz7777/nvs "$NVS_HOME". "$NVS_HOME/nvs.sh" install

这个

nvs.sh
是向环境变量中添加
nvs
的 shell 方法. 执行这个脚本后,你就可以在命令行中直接使用
nvs
了。请添加这个
install
命令至
~/.bashrc
,
~/.profile
, 或者
~/.zshrc
文件中。以便该
nvs
功能在你的 shell 中可用.

对于 ksh, 这个脚本

nvs.sh
需要添加到
~/.kshrc
中,或者是
$ENV
的地方。

CI 支持

NVS can be used in a CI environment[6]可以在 Travis CI 中使用。去使用 NVS 测试下载任何版本的 Node.js 环境。

基础使用

下载最新版本的 Node.js:

代码语言:javascript代码运行次数:0运行复制
$ nvs add latest

下载 lts 版本的 Node.js:

代码语言:javascript代码运行次数:0运行复制
$ nvs add lts

运行

nvs use
去选择 Node.js 的版本

代码语言:javascript代码运行次数:0运行复制
$ nvs use ltsPATH += ~/.nvs/node/6.9.1/x64

使用

nvs link
添加默认的 Node.js 版本:

代码语言:javascript代码运行次数:0运行复制
$ nvs link lts
Command 介绍

命令

描述

nvs help

获取命令的详细帮助

nvs install

初始化并使用 NVS

nvs uninstall

从 profile 和 environment 中移除 NVS

nvs --version

展示 NVS 版本

nvs add [version]

下载某个版本的 Node.js

nvs rm

移除某个版本的 Node.js

nvs migrate [tover]

迁移全局的 node_modules

nvs upgrade [fromver]

更新当前环境的 Node.js 至最新版本

nvs use [version]

选择使用某个版本的 Node.js

nvs auto [on/off]

使用 cwd 自动切换

nvs run [args...]

使用 Node.js 的某个版本的去执行 js 应用

nvs exec [args...]

使用 Node.js 的某个版本的去执行 可执行文件

nvs which [version]

显示 Node.js 的某个版本的二进制文件的路径

nvs ls [filter]

展示本地下载的 Node.js 版本列表

nvs ls-remote [filter]

列出可下载的 Node.js 版本

nvs lsr [filter]

同上

nvs link [version]

设置一个软连接指向一个版本,作为默认使用的版本

nvs unlink [version]

删除指向默认版本的链接

nvs alias [name] [value]

给某个版本设置一个别名

nvs remote [name] [value]

奥硕企业网站管理系统3.0.2
奥硕企业网站管理系统3.0.2

临沂奥硕软件有限公司拥有国内一流的企业网站管理系统,奥硕企业网站管理系统真正会打字就会建站的管理系统,其强大的扩展性可以满足企业网站实现各种功能(唯一集成3O多套模版的企业建站系统)奥硕企业网站管理系统具有一下特色功能1、双语双模(中英文采用单独模板设计,可制作中英文不同样式的网站)2、在线编辑JS动态菜单支持下拉效果,同时生成中文,英文,静态3个JS菜单3、在线制作并调用FLASH展示动画4、自

下载

设置下载 node 的仓库

[version]
[filter]
是用来描述版本的,有以下一些情况

情况

例子

完整的版本号

15.14.0、0.6.11

不完整版本号

14、15、8

标签

lts, latest, Argon

远程安装仓库名

node、node/15.12.0 。如果使用 nvs remote 添加了远程仓库名为 taobao 那就可以使用 taobao、taobao/15.13.0

远程仓库名斜线后的部分

lts, 4.6.0, 6/x86, node/6.7/x64

大概是这样,可以自行发掘更多用法。

有关每个命令的更多详细信息请参阅文档[7]

互动菜单

不带参数调用时,将

nvs
显示一个交互式菜单,用于切换和下载 Node.js 版本。

NVS —— js 实现的node版本管理工具

NVS 使用console-menu[8], 最初 console-menu 是为该项目编写的,然后单独发布。

VS Code 支持

Visual Studio Code 可以使用 NVS 选择启动或调试时要使用的 Node.js 版本。在

launch.json
.vscode
位于项目根文件夹中的文件夹中)中,添加
"runtimeArgs"
带有 NVS 版本字符串的
"runtimeExecutable"
属性 ,以及指向
nvs.cmd
(Windows)或
nvs
(Mac, Linux)。(如果 NVS 不在 VS Code 的 PATH 环境变量中,您可能需要指定一个绝对路径,例如
"${env:HOME}/.nvs/nvs"
)

配置示例:

launch.json
使用 VS Code 使用 NVS 启动 Node.js 版本 6.10:

代码语言:javascript代码运行次数:0运行复制
  "configurations": [    {      "type": "node",      "request": "launch",      "name": "Launch Program",      "program": "${file}",      "args": [ ],      "runtimeArgs": [ "6.10" ],      "windows": { "runtimeExecutable": "nvs.cmd" },      "osx": { "runtimeExecutable": "nvs" },      "linux": { "runtimeExecutable": "nvs" }    },  ]

或者,从中删除版本字符串,

"runtimeArgs"
.node-version
文件或文件夹中获取版本。有关更多详细信息,请参见NVS VS Code 文档[9]或者执行命令
nvs help vscode
.

配置 remotes

nvs remote
命令允许配置多个命名的下载位置。NVS 分别管理来自不同远程位置的版本,因此没有版本冲突的风险。默认情况下,只有一个远程指向 Node.js 官方版本:

代码语言:javascript代码运行次数:0运行复制
$ nvs remotedefault  nodenode     https://npm.taobao.org/mirrors/node/

这样就可以从其他来源获得构建。以下命令序列为 nightly 添加了一个远程 remote,列出了 nightly ,并添加了一个构建:

代码语言:javascript代码运行次数:0运行复制
$ nvs remote add nightly https://nodejs.org/download/nightly/$ nvs lsr nightly/13nightly/13.1.1-nightly20191120c7c566023f...$ nvs add nightly/13

添加其他 remote:

代码语言:javascript代码运行次数:0运行复制
nvs remote add iojs https://iojs.org/dist/nvs remote add chakracore https://nodejs.org/download/chakracore-release/
别名

别名是指远程名称和语义版本的组合。(不对处理器体系结构进行别名。)设置别名时,可以省略远程名称,在这种情况下,别名是指默认的远程。在其他任何命令中,都可以使用别名代替版本字符串。

代码语言:javascript代码运行次数:0运行复制
$ nvs alias myalias 6.7.0$ nvs aliasmyalias default/6.7.0$ nvs run myalias --versionv6.7.0$ nvs which myalias~/.nvs/node/6.7.0/x64/bin/node$ nvs which myalias/32~/.nvs/node/6.7.0/x86/bin/node

别名也可以引用本地目录[10],从而使 NVS 可以切换到 Node.js 的本地私有版本。

根据目录自动切换版本

在 Bash 或 PowerShell 中,NVS 可以在更改目录时自动切换当前 Shell 中的 Node.js 版本。默认情况下,此功能处于禁用状态。使它运行

nvs auto on
。之后,无论何时
cd
pushd
在包含
.node-version
或.nvmrc[11]文件的目录下,NVS 都会相应地自动切换 Node.js 版本,并在必要时下载新版本。当您
cd
到达目录上方没有目录
.node-version
.nvmrc
文件的目录时,将还原默认(链接)版本(如果有)。

代码语言:javascript代码运行次数:0运行复制
~$ nvs link 6.9.1~/.nvs/default -> ~/.nvs/node/6.9.1/x64~$ nvs usePATH += ~/.nvs/default/bin~$ nvs auto on~$ cd myprojectPATH -= ~/.nvs/default/binPATH += ~/.nvs/node/4.6.1/x64/bin~/myproject$ cd ..PATH -= ~/.nvs/node/4.6.1/x64/binPATH += ~/.nvs/default/bin

Windows 命令提示符中不提供此功能。请用 PowerShell。

手动切换使用
.node-version

如果您的外壳与自动切换不兼容,或者您 希望手动切换但仍利用其中的任何一个

.node-version
or
.nvmrc
文件,则可以
nvs use
使用该版本运行,也可以
auto
直接运行
nvs auto
.

代码语言:javascript代码运行次数:0运行复制
$ nvs use auto

相当于

代码语言:javascript代码运行次数:0运行复制
$ nvs auto
如何运行的Bootstrapping node

NVS 使用特定于平台的

shell
程序代码是比较少的,这些代码通过自动下载 Node.js 的私有副本来引导工具。引导代码仅是 Windows 命令脚本,Windows powershell 脚本和几十行的 POSIX shell 脚本。除引导程序外,shell 脚本还用于将 PATH 更改导出到调用 shell(单独的 Node.js 进程无法执行)。但是,所有用于查询可用版本,下载和安装 Node.js 以及匹配 npm ,切换版本/体系结构/引擎,卸载,解析和更新 PATH 等的代码都可以用 JavaScript 编写,并且大多数都是以跨平台的方式编写的。

版本切换

NVS 下载 Node.js 版本在

NVS_HOME
环境变量指定的目录下,或者在
NVS_HOME
未设置的 NVS 工具目录下。例如,每个构建都位于基于远程名称,语义版本和体系结构的子目录中
node/6.7.0/x64
.

当您使用

nvs use
一个版本时, 当前
shell
的会更新
PATH
为包括该版本的
bin
目录.

全局模块

与 NVS 安装的 Node.js 一起使用

npm install -g
or
npm link
与之配合使用时,将安装全局模块或将其链接到特定于版本的目录中。(NVS 清除
NPM_CONFIG_PREFIX
可能已设置的任何环境变量。)这意味着,在 NVS 切换版本时,它也在切换可用的全局模块集。该
nvs migrate
命令可以将这些全局模块从一个 Node.js 版本迁移到另一 Node.js 版本。

Symbolic 链接

nvs link
命令在
$NVS_HOME/default
指向指定版本(或命令时的当前版本)的位置创建符号目录链接
PATH
。当需要在其他地方配置固定路径时,这很有用。

在非 Windows 平台上,如果存在链接,则提供

nvs.sh
脚本来源的新外壳程序也将设置
PATH
为包括默认版本。在 Windows 上,
PATH
环境变量在用户配置文件中更新,因此新的 Shell 将使用默认版本。

nvs ls
命令列出所有本地 Node.js 版本,并使用标记当前路径中的版本
>
,并使用标记默认(链接的)版本(如果有)
#
。这些可以相同或不同。例如:

代码语言:javascript代码运行次数:0运行复制
  node/4.5.0/x64 #node/4.6.0/x64 >node/6.7.0/x64
系统 linking

如果

$NVS_HOME
在诸如
/usr/local
or
%ProgramFiles%
,
nvs link
命令还会链接到众所周知的 Node.js 系统位置。(仅当尚无系统安装的 Node.js 时才允许这样做。)

在非 Windows 平台上,为
node
创建符号链接
/usr/local/bin
,
npm
以及具有可执行任何全球安装的 Node.js 模块。请注意,在安装或卸载包含可执行文件的全局模块之后,可能需要再次运行
nvs link
以更新全局链接。使用 NVS 链接不同版本的 Node.js(具有不同的全局模块)会相应地更新所有链接。在 Windows 上,在创建符号目录链接
%ProgramFiles%\Nodejs
,并将该目录添加到系统
PATH
中。

$NVS_HOME
指向非系统目录时,将跳过此系统链接功能,因为在系统目录中创建到用户文件的符号链接是错误的。

依赖关系

除了自动下载的节点的私有副本之外,NVS 没有任何外部依赖关系。运行时 JS 软件包的相关性很小,并且已在存储库中签入,以避免

npm install
在引导时需要。

参考资料

[1] Node.js: http://nodejs.org/

[2] nvm: https://github.com/creationix/nvm

[3] 有关设置 NVS 的更多细节和选项,请参阅设置页面。: https://gitee.com/wsz7777/nvs/tree/gitee/doc/SETUP.md

[4] NVS releases page on GitHub: https://github.com/wsz7777/nvs/releases

[5] chocolatey: https://chocolatey.org/

[6] NVS can be used in a CI environment: https://gitee.com/wsz7777/nvs/tree/gitee/doc/CI.md

[7] 请参阅文档: https://gitee.com/wsz7777/nvs/tree/gitee/doc

[8] console-menu: https://gitee.com/wsz7777/console-menu

[9] NVS VS Code 文档: https://gitee.com/wsz7777/nvs/tree/gitee/doc/VSCODE.md

[10] 别名也可以引用本地目录: https://gitee.com/wsz7777/nvs/tree/gitee/doc/ALIAS.md#aliasing-directories

[11]

.nvmrc
: https://github.com/nvm-sh/nvm#nvmrc

[12] 原文链接:https://github.com/jasongin/nvs/blob/master/LICENSE.txt

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

544

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

372

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

728

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

470

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

393

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

990

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

655

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

545

2023.09.20

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 7.8万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 1.9万人学习

Node.js-前端工程化必学
Node.js-前端工程化必学

共19课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号