node版本及源管理

# 版本管理

# 简介

Node 版本推荐用最新的lts版本(目前12.x), 尝鲜可以用current版本(一般比稳定版超前一个大版本)

  • Node单版本
  • Node多版本
    • 有需要用到不同Node的版本运行不同的项目,单版本就很局限了,所以社区也出了多版本管理的工具

# nvm

nvm是node版本管理工具;为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版本的node的工具

# 安装

nvm一开始只为linux和macos实现,因为是用shell脚本写的,后续流行起来后,就开始有周边了,包括兼容windows的衍生库

# Linux/macOS上安装
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash # 或者
# 上面的执行成功后,还需要写入环境变量,具体改动你的shell配置文件(用户根目录下的) 这一步,现在默认就有设置啦;
# bash -> .bashrc
# zsh -> .zshrc
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
1
2
3
4
5
6
7
# windows上安装

Win环境: 参考 https://github.com/coreybutler/nvm-windows

nvm-windows runs in an Admin shell. You'll need to start powershell or Command Prompt as Administrator to use nvm-windows

$ nvm install 10.15.0 # 下载编译和安装指定版本node
$ nvm use 10.15.0 # 切换(使用)指定版本node
$ nvm alias default 10.15.0 # 设置shell默认版本
1
2
3

注意:这里安装nvm的路径不能是空格或者汉字; D:\ProgramFiles\nvm

# 常用命令

  • nvm ls-remote:列出所有可以安装的node版本号
  • nvm install 10/v10.4.0:安装指定版本号的node
  • nvm use 10/v10.3.0:切换node的版本,这个是全局的
  • nvm ls:列出所有已经安装的node版本
  • nvm alias default 10:设置默认no de版本

# 其他命令

  • nvm arch [32|64] : 显示node是运行在32位还是64位模式。指定32或64来覆盖默认体系结构。
  • nvm install [arch]: 该可以是node.js版本或最新稳定版本latest。(可选[arch])指定安装32位或64位版本(默认为系统arch)。设置[arch]为all以安装32和64位版本。在命令后面添加--insecure ,可以绕过远端下载服务器的SSL验证。
  • nvm list [available]: 列出已经安装的node.js版本。可选的available,显示可下载版本的部分列表。这个命令可以简写为nvm ls [available]。
  • nvm on: 启用node.js版本管理。
  • nvm off: 禁用node.js版本管理(不卸载任何东西)
  • nvm proxy [url]: 设置用于下载的代理。留[url]空白,以查看当前的代理。设置[url]为none删除代理。
  • nvm node_mirror [url]:设置node镜像,默认为https://nodejs.org/dist/.。我建议设置为淘宝的镜像https://npm.taobao.org/mirrors/node/
  • nvm npm_mirror [url]:设置npm镜像,默认为https://github.com/npm/npm/archive/。我建议设置为淘宝的镜像https://npm.taobao.org/mirrors/npm/
  • nvm uninstall : 卸载指定版本的nodejs。
  • nvm use [version] [arch]: 切换到使用指定的nodejs版本。可以指定32/64位[arch]。nvm use 将继续使用所选版本,但根据提供的值切换到32/64位模式的
  • nvm root [path]: 设置 nvm 存储node.js不同版本的目录 ,如果未设置,将使用当前目录。
  • nvm version: 显示当前运行的nvm版本,可以简写为nvm v

# bash脚本运行NVM命令

./test.sh: line 2: nvm: command not found

脚本相互应用处理;

test.sh

#!/bin/bash
#原因:nvm是一个脚本不是指令
#解决:只需在执行nvm前加一行指令即可解决问题:source ~/.nvm/nvm.sh
#注意: ~/.nvm是nvm的安装路径,需要写nvm的实际安装路径,可以用find / -name “.nvm” 来查找nvm的安装目录
. ~/.nvm/nvm.sh
nvm use 7
1
2
3
4
5
6

# 可能碰到的问题

问题:nvm install x.x.x 可以成功,但无法切换和使用

# windows上安装nvm后选择node版本出现exit status 1...

原因:我把nvm安装到了有空格的路径上(D:\Program Files),导致切换失败

解决:把nvm卸载重装到没有空格的路径上(例如:D:\nvm),即可解决问题

# nvs

nvs (opens new window)默认支持全平台,用node写的

# 安装

# Linux/macOS上安装
export NVS_HOME="$HOME/.nvs"# 声明一个临时变量
git clone https://github.com/jasongin/nvs "$NVS_HOME" # 克隆仓库
. "$NVS_HOME/nvs.sh" install # 执行脚本安装
1
2
3
# windows上安装
$ nvs --help
NVS (Node Version Switcher) usage

nvs help <command>             Get detailed help for a command
nvs install                    Initialize your profile for using NVS
nvs --version                  Display the NVS tool version

nvs menu                       Launch an interactive menu

nvs add <version>              Download and extract a node version
nvs rm <version>               Remove a node version
nvs migrate <fromver> [tover]  Migrate global modules
nvs upgrade [fromver]          Upgrade to latest patch of major version

nvs use [version]              Use a node version in the current shell
nvs auto [on/off]              Automatically switch based on cwd
nvs run <ver> <js> [args...]   Run a script using a node version
nvs exec <ver> <exe> [args...] Run an executable using a node version
nvs which [version]            Show the path to a node version binary

nvs ls [filter]                List local node versions
nvs ls-remote [filter]         List node versions available to download

nvs link [version]             Link a version as the default
nvs unlink [version]           Remove links to a default version

nvs alias [name] [value]       Set or recall aliases for versions
nvs remote [name] [uri]        Set or recall download base URIs

A version string consists of a semantic version number or version label
("lts" or "latest"), optionally preceeded by a remote name, optionally
followed by an architecture, separated by slashes.
Examples: "lts", "4.6.0", "6.3.1/x86", "node/6.7.0/x64"
Aliases may also be used anywhere in place of a version string.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 常用命令

$ nvs add lts # 安装最新的LTS
$ nvs use lts # 切换指定的 node 版本
$ nvs link lts# 配置为默认版本,设置shell默认版本
1
2
3

# 源码安装

yum -y install wget git
wget https://nodejs.org/dist/v10.18.0/node-v10.18.0-linux-x64.tar.gz /usr/lib/node-v10.18.0-linux-x64.tar.gz
# 配置环境变量
export NODE_HOME="/usr/lib/node-v10.18.0-linux-x64"
export PATH=$PATH:$NODE_HOME/bin

source /etc/profile #或者 . /etc/profile
node -v
npm -v
1
2
3
4
5
6
7
8
9

# 源管理

# 直接切换

随时指定node源;不再需要像之前设置 --registry

之前的源设置方式:常规的源切换,只能用npm config去设置局部或者全局的源,步骤和操作上有点繁琐。

  • 局部设置;--registry=https://registry.npm.taobao.org
  • 全局设置; npm config set registry http://{服务器ip}:4873/

# NPM

npm get registry # 查询当前镜像
npm config set registry https://registry.npm.taobao.org/ #设置为淘宝镜像 
npm config set registry https://registry.npmjs.org/ # 设置为官方镜像
npm --registry https://registry.npm.taobao.org install lodash # 临时使用淘宝源
npm info lodash #检测是否切换到了淘宝源
1
2
3
4
5

# YARN

yarn config get registry #查询当前镜像
yarn config set registry https://registry.npm.taobao.org/ #设置为淘宝镜像
yarn config set registry https://registry.yarnpkg.com #设置为官方镜像;还原地址
1
2
3

# nrm【推荐】

# NPM镜像的管理工具

安装

  • npm install -g nrm --registry=https://registry.npm.taobao.org
  • 或者 npm install -g nrm
$ nrm ls
  npm -------- https://registry.npmjs.org/ # npm官方源
  yarn ------- https://registry.yarnpkg.com/ # yarn的官方源
  cnpm ------- http://r.cnpmjs.org/ # cnpm 源
  taobao ----- https://registry.npm.taobao.org/ # 淘宝官方镜像源
  nj --------- https://registry.nodejitsu.com/ # 国外的官方镜像源
1
2
3
4
5
6

常用命令

nrm ls
nrm add bdp xxxx
nrm use taobao
nrm del bdp 
nrm test 
nrm test taobao
1
2
3
4
5
6

# yrm【推荐】

# YARN镜像的管理工具

安装:yarn global add yrm

# 查看所有镜像
yrm ls

  npm -------- https://registry.npmjs.org/
* yarn ------- https://registry.yarnpkg.com/
  cnpm ------- http://r.cnpmjs.org/
  taobao ----- https://registry.npm.taobao.org/
  nj --------- https://registry.nodejitsu.com/
  npmMirror -- https://skimdb.npmjs.com/registry/
  edunpm ----- http://registry.enpmjs.org/
# 使用淘宝镜像
yrm use taobao
1
2
3
4
5
6
7
8
9
10
11
12

# 常用淘宝镜像

https://developer.aliyun.com/mirror

npm install phantomjs --phantomjs_cdnurl=http://npm.taobao.org/mirrors/phantomjs
npm install chromedriver --chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver
npm install operadriver --operadriver_cdnurl=http://npm.taobao.org/mirrors/operadriver
npm config set disturl https://npm.taobao.org/dist
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/

npm config set puppeteer_download_host=https://npm.taobao.org/mirrors

yarn config set registry http://registry.npm.taobao.org/
yarn config set registry http://registry.npmjs.org/
1
2
3
4
5
6
7
8
9
10
11
12

# 设置

# 查询当前的代理设置

npm config set registry https://registry.npm.taobao.org
# npm config list
./node_modules/.bin/yarn config set registry https://registry.npm.taobao.org
# ./node_modules/.bin/yarn config list
1
2
3
4
npm get registry
yarn config get registry
1
2

# npm代理

npm config set registry https://registry.npm.taobao.org
npm config set disturl https://npm.taobao.org/dist
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
npm config set fse_binary_host_mirror https://npm.taobao.org/mirrors/fsevents/
1
2
3
4
5
6

# yarn代理

yarn config set registry https://registry.npm.taobao.org -g
yarn config set disturl https://npm.taobao.org/dist -g
yarn config set electron_mirror https://npm.taobao.org/mirrors/electron/ -g
yarn config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ -g
yarn config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/ -g
yarn config set chromedriver_cdnurl https://cdn.npm.taobao.org/dist/chromedriver -g
yarn config set operadriver_cdnurl https://cdn.npm.taobao.org/dist/operadriver -g
yarn config set fse_binary_host_mirror https://npm.taobao.org/mirrors/fsevents -g
1
2
3
4
5
6
7
8

# 持久化文件

路径在C:\Users\用户名 .npmrc和.yarnrc文件

上次更新: 2022/04/15, 05:41:27
×