1 Star 0 Fork 3

LiuMing/nvs

forked from wsz7777/nvs 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

NVS (Node Version Switcher)

Build Status: Mac + Linux Build status: Windows

NVS是一个跨平台的Node.js的版本切换工具,并且NVS本身是用 Node.js 编写的。

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

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

Windows

windows 的MSI安装包可以从 NVS releases page on GitHub 这里获得。

你也可以通过 chocolatey 安装:

choco install nvs

Mac, Linux

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

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 可以在 Travis CI 中使用。 去使用 NVS 测试下载任何版本的 Node.js 环境。

基础使用

下载最新版本的 Node.js:

$ nvs add latest

下载lts版本的 Node.js:

$ nvs add lts

运行 nvs use 去选择 Node.js 的版本

$ nvs use lts
PATH += ~/.nvs/node/6.9.1/x64

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

$ nvs link lts

Command 介绍

命令 描述
nvs help <command> 获取命令的详细帮助
nvs install 初始化并使用 NVS
nvs uninstall 从 profile 和 environment 中移除 NVS
nvs --version 展示 NVS 版本
nvs add [version] 下载某个版本的 Node.js
nvs rm <version> 移除某个版本的 Node.js
nvs migrate <fromver> [tover] 迁移全局的node_modules
nvs upgrade [fromver] 更新当前环境的 Node.js 至最新版本
nvs use [version] 选择使用某个版本的 Node.js
nvs auto [on/off] 使用 cwd 自动切换
nvs run <ver> <js> [args...] 使用 Node.js 的某个版本的去执行 js 应用
nvs exec <ver> <exe> [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

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

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

互动菜单

不带参数调用时,将 nvs 显示一个交互式菜单,用于切换和下载 Node.js 版本。

nvs 菜单

NVS 使用 console-menu, 最初 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:

  "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 文档 或者执行命令 nvs help vscode.

配置 remotes

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

$ nvs remote
default  node
node     https://npm.taobao.org/mirrors/node/

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

$ nvs remote add nightly https://nodejs.org/download/nightly/
$ nvs lsr nightly/13
nightly/13.1.1-nightly20191120c7c566023f
...
$ nvs add nightly/13

添加其他 remote:

nvs remote add iojs https://iojs.org/dist/
nvs remote add chakracore https://nodejs.org/download/chakracore-release/

别名

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

$ nvs alias myalias 6.7.0
$ nvs alias
myalias default/6.7.0
$ nvs run myalias --version
v6.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

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

根据目录自动切换版本

在Bash或PowerShell中,NVS可以在更改目录时自动切换当前Shell中的Node.js版本。默认情况下,此功能处于禁用状态。使它运行 nvs auto on。之后,无论何时 cdpushd 在包含 .node-version.nvmrc 文件的目录下,NVS都会相应地自动切换Node.js版本,并在必要时下载新版本。当您 cd 到达目录上方没有目录 .node-version.nvmrc 文件的目录时,将还原默认(链接)版本(如果有)。

~$ nvs link 6.9.1
~/.nvs/default -> ~/.nvs/node/6.9.1/x64
~$ nvs use
PATH += ~/.nvs/default/bin
~$ nvs auto on
~$ cd myproject
PATH -= ~/.nvs/default/bin
PATH += ~/.nvs/node/4.6.1/x64/bin
~/myproject$ cd ..
PATH -= ~/.nvs/node/4.6.1/x64/bin
PATH += ~/.nvs/default/bin

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

手动切换使用 .node-version

如果您的外壳与自动切换不兼容,或者您​​希望手动切换但仍利用其中的任何一个 .node-version or .nvmrc 文件,则可以 nvs use 使用该版本运行,也可以 auto 直接运行 nvs auto.

$ nvs use auto

相当于

$ 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版本,并使用标记当前路径中的版本 >,并使用标记默认(链接的)版本(如果有)# 。这些可以相同或不同。例如:

  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 在引导时需要。

NVS (Node Version Switcher) Copyright (c) Microsoft Corporation All rights reserved. MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

nodejs 版本控制工具 展开 收起
MIT
取消

发行版

暂无发行版

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LiuMing-Git/nvs.git
git@gitee.com:LiuMing-Git/nvs.git
LiuMing-Git
nvs
nvs
gitee

搜索帮助