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]

设置下载 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"

)

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

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

下载

配置示例:

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

453

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

331

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

718

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1561

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

649

2023.11.24

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

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

精品课程

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

共57课时 | 12.8万人学习

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

共16课时 | 2.1万人学习

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

共19课时 | 3.1万人学习

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

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