<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NVS —— js 實(shí)現(xiàn)的node版本管理工具

          共 6715字,需瀏覽 14分鐘

           ·

          2022-01-19 18:15

          大廠技術(shù)??高級(jí)前端??Node進(jìn)階

          點(diǎn)擊上方?程序員成長(zhǎng)指北,關(guān)注公眾號(hào)

          回復(fù)1,加入高級(jí)Node交流群

          NVS (Node Version Switcher)

          NVS 是一個(gè)跨平臺(tái)的 Node.js 的版本切換工具,并且 NVS 本身是用Node.js[1]編寫(xiě)的。

          這個(gè)工具顯然是受到其他 Node.js 版本管理器工具的啟發(fā),特別是nvm[2],它借鑒了很多思想和一些命令行語(yǔ)法。

          以下是基本的設(shè)置說(shuō)明。有關(guān)設(shè)置 NVS 的更多細(xì)節(jié)和選項(xiàng),請(qǐng)參閱設(shè)置頁(yè)面。[3]

          Windows

          windows 的 MSI 安裝包可以從NVS releases page on GitHub[4]這里獲得。
          你也可以通過(guò)chocolatey[5]安裝:

          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

          這個(gè)nvs.sh是向環(huán)境變量中添加nvs的 shell 方法. 執(zhí)行這個(gè)腳本后,你就可以在命令行中直接使用nvs了。請(qǐng)?zhí)砑舆@個(gè)install命令至~/.bashrc,~/.profile, 或者~/.zshrc文件中。以便該nvs功能在你的 shell 中可用.

          對(duì)于 ksh, 這個(gè)腳本nvs.sh需要添加到~/.kshrc中,或者是$ENV的地方。

          CI 支持

          NVS can be used in a CI environment[6]可以在 Travis CI 中使用。去使用 NVS 測(cè)試下載任何版本的 Node.js 環(huán)境。

          基礎(chǔ)使用

          下載最新版本的 Node.js:

          $?nvs?add?latest

          下載 lts 版本的 Node.js:

          $?nvs?add?lts

          運(yùn)行nvs use去選擇 Node.js 的版本

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

          使用nvs link添加默認(rèn)的 Node.js 版本:

          $?nvs?link?lts

          Command 介紹

          命令描述
          nvs help 獲取命令的詳細(xì)幫助
          nvs install初始化并使用 NVS
          nvs uninstall從 profile 和 environment 中移除 NVS
          nvs --version展示 NVS 版本
          nvs add [version]下載某個(gè)版本的 Node.js
          nvs rm 移除某個(gè)版本的 Node.js
          nvs migrate [tover]遷移全局的 node_modules
          nvs upgrade [fromver]更新當(dāng)前環(huán)境的 Node.js 至最新版本
          nvs use [version]選擇使用某個(gè)版本的 Node.js
          nvs auto [on/off]使用 cwd 自動(dòng)切換
          nvs run [args...]使用 Node.js 的某個(gè)版本的去執(zhí)行 js 應(yīng)用
          nvs exec [args...]使用 Node.js 的某個(gè)版本的去執(zhí)行 可執(zhí)行文件
          nvs which [version]顯示 Node.js 的某個(gè)版本的二進(jìn)制文件的路徑
          nvs ls [filter]展示本地下載的 Node.js 版本列表
          nvs ls-remote [filter]列出可下載的 Node.js 版本
          nvs lsr [filter]同上
          nvs link [version]設(shè)置一個(gè)軟連接指向一個(gè)版本,作為默認(rèn)使用的版本
          nvs unlink [version]刪除指向默認(rèn)版本的鏈接
          nvs alias [name] [value]給某個(gè)版本設(shè)置一個(gè)別名
          nvs remote [name] [value]設(shè)置下載 node 的倉(cāng)庫(kù)

          [version][filter]是用來(lái)描述版本的,有以下一些情況

          情況例子
          完整的版本號(hào)15.14.0、0.6.11
          不完整版本號(hào)14、15、8
          標(biāo)簽lts, latest, Argon
          遠(yuǎn)程安裝倉(cāng)庫(kù)名node、node/15.12.0 。如果使用 nvs remote 添加了遠(yuǎn)程倉(cāng)庫(kù)名為 taobao 那就可以使用 taobao、taobao/15.13.0
          遠(yuǎn)程倉(cāng)庫(kù)名斜線后的部分lts, 4.6.0, 6/x86, node/6.7/x64

          大概是這樣,可以自行發(fā)掘更多用法。

          有關(guān)每個(gè)命令的更多詳細(xì)信息請(qǐng)參閱文檔[7]

          互動(dòng)菜單

          不帶參數(shù)調(diào)用時(shí),將nvs顯示一個(gè)交互式菜單,用于切換和下載 Node.js 版本。

          NVS 使用console-menu[8], 最初 console-menu 是為該項(xiàng)目編寫(xiě)的,然后單獨(dú)發(fā)布。

          VS Code 支持

          Visual Studio Code 可以使用 NVS 選擇啟動(dòng)或調(diào)試時(shí)要使用的 Node.js 版本。在launch.json.vscode位于項(xiàng)目根文件夾中的文件夾中)中,添加"runtimeArgs"帶有 NVS 版本字符串的"runtimeExecutable"屬性 ,以及指向nvs.cmd(Windows)或nvs(Mac, Linux)。(如果 NVS 不在 VS Code 的 PATH 環(huán)境變量中,您可能需要指定一個(gè)絕對(duì)路徑,例如"${env:HOME}/.nvs/nvs")

          配置示例:launch.json使用 VS Code 使用 NVS 啟動(dòng) 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文件或文件夾中獲取版本。有關(guān)更多詳細(xì)信息,請(qǐng)參見(jiàn)NVS VS Code 文檔[9]或者執(zhí)行命令nvs help vscode.

          配置 remotes

          nvs remote命令允許配置多個(gè)命名的下載位置。NVS 分別管理來(lái)自不同遠(yuǎn)程位置的版本,因此沒(méi)有版本沖突的風(fēng)險(xiǎn)。默認(rèn)情況下,只有一個(gè)遠(yuǎn)程指向 Node.js 官方版本:

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

          這樣就可以從其他來(lái)源獲得構(gòu)建。以下命令序列為 nightly 添加了一個(gè)遠(yuǎn)程 remote,列出了 nightly ,并添加了一個(gè)構(gòu)建:

          $?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/

          別名

          別名是指遠(yuǎn)程名稱和語(yǔ)義版本的組合。(不對(duì)處理器體系結(jié)構(gòu)進(jìn)行別名。)設(shè)置別名時(shí),可以省略遠(yuǎn)程名稱,在這種情況下,別名是指默認(rèn)的遠(yuǎn)程。在其他任何命令中,都可以使用別名代替版本字符串。

          $?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

          別名也可以引用本地目錄[10],從而使 NVS 可以切換到 Node.js 的本地私有版本。

          根據(jù)目錄自動(dòng)切換版本

          在 Bash 或 PowerShell 中,NVS 可以在更改目錄時(shí)自動(dòng)切換當(dāng)前 Shell 中的 Node.js 版本。默認(rèn)情況下,此功能處于禁用狀態(tài)。使它運(yùn)行nvs auto on。之后,無(wú)論何時(shí)cdpushd在包含.node-version.nvmrc[11]文件的目錄下,NVS 都會(huì)相應(yīng)地自動(dòng)切換 Node.js 版本,并在必要時(shí)下載新版本。當(dāng)您cd到達(dá)目錄上方?jīng)]有目錄.node-version.nvmrc文件的目錄時(shí),將還原默認(rèn)(鏈接)版本(如果有)。

          ~$?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 命令提示符中不提供此功能。請(qǐng)用 PowerShell。

          手動(dòng)切換使用.node-version

          如果您的外殼與自動(dòng)切換不兼容,或者您 ?希望手動(dòng)切換但仍利用其中的任何一個(gè).node-versionor.nvmrc文件,則可以nvs use使用該版本運(yùn)行,也可以auto直接運(yùn)行nvs auto.

          $?nvs?use?auto

          相當(dāng)于

          $?nvs?auto

          如何運(yùn)行的

          Bootstrapping node

          NVS 使用特定于平臺(tái)的shell程序代碼是比較少的,這些代碼通過(guò)自動(dòng)下載 Node.js 的私有副本來(lái)引導(dǎo)工具。引導(dǎo)代碼僅是 Windows 命令腳本,Windows powershell 腳本和幾十行的 POSIX shell 腳本。除引導(dǎo)程序外,shell 腳本還用于將 PATH 更改導(dǎo)出到調(diào)用 shell(單獨(dú)的 Node.js 進(jìn)程無(wú)法執(zhí)行)。但是,所有用于查詢可用版本,下載和安裝 Node.js 以及匹配 npm ,切換版本/體系結(jié)構(gòu)/引擎,卸載,解析和更新 PATH 等的代碼都可以用 JavaScript 編寫(xiě),并且大多數(shù)都是以跨平臺(tái)的方式編寫(xiě)的。

          版本切換

          NVS 下載 Node.js 版本在NVS_HOME環(huán)境變量指定的目錄下,或者在NVS_HOME未設(shè)置的 NVS 工具目錄下。例如,每個(gè)構(gòu)建都位于基于遠(yuǎn)程名稱,語(yǔ)義版本和體系結(jié)構(gòu)的子目錄中node/6.7.0/x64.

          當(dāng)您使用nvs use一個(gè)版本時(shí), 當(dāng)前shell的會(huì)更新PATH為包括該版本的bin目錄.

          全局模塊

          與 NVS 安裝的 Node.js 一起使用npm install -gornpm link與之配合使用時(shí),將安裝全局模塊或?qū)⑵滏溄拥教囟ㄓ诎姹镜哪夸浿?。(NVS 清除NPM_CONFIG_PREFIX可能已設(shè)置的任何環(huán)境變量。)這意味著,在 NVS 切換版本時(shí),它也在切換可用的全局模塊集。該nvs migrate命令可以將這些全局模塊從一個(gè) Node.js 版本遷移到另一 Node.js 版本。

          Symbolic 鏈接

          nvs link命令在$NVS_HOME/default指向指定版本(或命令時(shí)的當(dāng)前版本)的位置創(chuàng)建符號(hào)目錄鏈接PATH。當(dāng)需要在其他地方配置固定路徑時(shí),這很有用。

          在非 Windows 平臺(tái)上,如果存在鏈接,則提供nvs.sh腳本來(lái)源的新外殼程序也將設(shè)置PATH為包括默認(rèn)版本。在 Windows 上,PATH環(huán)境變量在用戶配置文件中更新,因此新的 Shell 將使用默認(rèn)版本。

          nvs ls命令列出所有本地 Node.js 版本,并使用標(biāo)記當(dāng)前路徑中的版本>,并使用標(biāo)記默認(rèn)(鏈接的)版本(如果有)#。這些可以相同或不同。例如:

          ??node/4.5.0/x64
          ?#node/4.6.0/x64
          ?>node/6.7.0/x64

          系統(tǒng) linking

          如果$NVS_HOME在諸如/usr/localor%ProgramFiles%,nvs link命令還會(huì)鏈接到眾所周知的 Node.js 系統(tǒng)位置。(僅當(dāng)尚無(wú)系統(tǒng)安裝的 Node.js 時(shí)才允許這樣做。)

          • 在非 Windows 平臺(tái)上,為node創(chuàng)建符號(hào)鏈接/usr/local/bin,npm以及具有可執(zhí)行任何全球安裝的 Node.js 模塊。請(qǐng)注意,在安裝或卸載包含可執(zhí)行文件的全局模塊之后,可能需要再次運(yùn)行nvs link以更新全局鏈接。使用 NVS 鏈接不同版本的 Node.js(具有不同的全局模塊)會(huì)相應(yīng)地更新所有鏈接。

          • 在 Windows 上,在創(chuàng)建符號(hào)目錄鏈接%ProgramFiles%\Nodejs,并將該目錄添加到系統(tǒng)PATH中。

          當(dāng)$NVS_HOME指向非系統(tǒng)目錄時(shí),將跳過(guò)此系統(tǒng)鏈接功能,因?yàn)樵谙到y(tǒng)目錄中創(chuàng)建到用戶文件的符號(hào)鏈接是錯(cuò)誤的。

          依賴關(guān)系

          除了自動(dòng)下載的節(jié)點(diǎn)的私有副本之外,NVS 沒(méi)有任何外部依賴關(guān)系。運(yùn)行時(shí) JS 軟件包的相關(guān)性很小,并且已在存儲(chǔ)庫(kù)中簽入,以避免npm install在引導(dǎo)時(shí)需要。

          Node 社群


          我組建了一個(gè)氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對(duì)Node.js學(xué)習(xí)感興趣的話(后續(xù)有計(jì)劃也可以),我們可以一起進(jìn)行Node.js相關(guān)的交流、學(xué)習(xí)、共建。下方加 考拉 好友回復(fù)「Node」即可。


          ???“分享、點(diǎn)贊、在看” 支持一波??

          參考資料

          [1]?

          Node.js:?http://nodejs.org/

          [2]?

          nvm:?https://github.com/creationix/nvm

          [3]?

          有關(guān)設(shè)置 NVS 的更多細(xì)節(jié)和選項(xiàng),請(qǐng)參閱設(shè)置頁(yè)面。:?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]?

          請(qǐng)參閱文檔:?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

          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久久久无码日韩欧美电影 | 殴美肏屄视频免费看 | 亚洲无码手机在线播放 | 成人H动漫精品一区二区无码软件 | 色黄在线观看 |