Node 的包管理器NVM
nvm介绍
github地址:nvm-sh
nvm ( Node Version Manager ),是一个nodejs的版本管理工具。通过对node和npm集中的版本管理主要解决了两个问题
- 统⼀解决了node和npm版本管理的问题,nvm提供了很⽅便的机制可以使我们在同⼀终端上安装多个
版本的node和npm并且提供了快速切换版本的能⼒,这样为我们检测项⽬兼容性和bug定位提供了很
⼤的帮助。 - 解决了种种permission的相关问题,⾃此再也不⽤重复输⼊sudo来进⾏全局安装。
安装NVM
windows下可以使用scoop进行安装
1
2
3$ scoop install nvm
....
'nvm' (1.1.7) was installed successfully!官⽅推荐的两种安装⽅式:这二者需要网络条件良好。mac下可以使用使用brew的⽅式安装[不推荐]。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash
# or:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash
# 示例
curl -o- https://raw.fastgit.org/creationix/nvm/v0.35.0/install.sh | bash
会输出如下:
=> Downloading
nvm as script to '/root/.nvm'
=> Appending nvm
source string to /root/.bashrc
=> Appending
bash_completion source string to /root/.bashrc
=> Close and
reopen your terminal to start using nvm or run the following to use it now:
export
NVM_DIR="$HOME/.nvm"
[ -s
"$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s
"$NVM_DIR/bash_completion" ] && \.
"$NVM_DIR/bash_completion" #
This loads nvm bash_completion
提示信息可以看出,设置了环境变量,Git方式安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15If you have git installed (requires git v1.7.10+):
# clone this repo in the root of your user profile
cd ~/
git clone https://github.com/nvm-sh/nvm.git .nvm
cd ~/.nvm
# check out the latest version
git checkout v0.39.3
# activate nvm by sourcing it from your shell: .
./nvm.sh
# Now add these lines to your ~/.bashrc, ~/.profile, or ~/.zshrc file to have it automatically sourced upon login: (you may have to add to more than one of the above files)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion安装完成后重启终端验证
1
C:\Users\fulsun>nvm -v
NVM设置国内源
由于网络问题导致下载速度慢,可以设置国内镜像提升速度
指定 nvm 的镜像需要在环境配置中增加
NVM_NODEJS_ORG_MIRROR
临时使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 临时方案,每次执⾏nvm安装时,执⾏
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
[sun@cmcc#1 .nvm]$ export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
[sun@cmcc#1 .nvm]$ nvm install --lts
Installing latest LTS version.
Downloading and installing node v12.14.0...
Local cache found: ${NVM_DIR}/.cache/bin/node-v12.14.0-darwin-x64/node-v12.14.0-darwin-x64.tar.gz
Computing checksum with shasum -a 256
Checksums do not match: '8809eed989e9f63570b207a95e4decabe811103fd3fd05777fde07af32221eea' found, '5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048' expected.
Checksum check failed!
Removing the broken local cache...
Downloading https://npm.taobao.org/mirrors/node/v12.14.0/node-v12.14.0-darwin-x64.tar.gz...
########################################## 58.8%永久⽅案,当然是将export语句放到 ~/.bashrc 中
1 | export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node |
Windows下
1
2
3
4
5
6
7$> nvm node_mirror https://npm.taobao.org/mirrors/node/
$> nvm npm_mirror https://npm.taobao.org/mirrors/npm/
# 也可在安装目录目录下找到setting.txt文件,打开后加上,
# \scoop\persist\nvm\setting.txt
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
nvm常用指令
命令 | 说明 |
---|---|
nvm arch | 查看当前系统的位数和当前nodejs的位数 |
nvm list | 查看已经安装的版本 |
nvm list installed | 查看已经安装的版本 |
nvm list available | 查看网络可以安装的版本 |
nvm install [arch] | 安装制定版本的node 并且可以指定平台 version 版本号 arch 平台 |
nvm on | 打开nodejs版本控制 |
nvm off | 关闭nodejs版本控制 |
nvm proxy [url] | 查看和设置代理 |
nvm node_mirror [url] | 设置或者查看setting.txt中的node_mirror |
nvm npm_mirror [url] | 设置或者查看setting.txt中的npm_mirror |
nvm uninstall | 卸载指定的版本 |
nvm use [version] [arch] | 切换指定的node版本和位数 |
nvm root [path] | 设置和查看root路径 |
nvm version | 查看当前的版本,version可简化为v。 |
nvm
安装Node.js
Windows
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
35
36
37
38
39
40
41
42
43# 查看nodejs可用版本
C:\Users\fulsun>nvm list available
| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
| 13.5.0 | 12.14.0 | 0.12.18 | 0.11.16 |
| 13.4.0 | 12.13.1 | 0.12.17 | 0.11.15 |
| 13.3.0 | 12.13.0 | 0.12.16 | 0.11.14 |
| 13.2.0 | 10.18.0 | 0.12.15 | 0.11.13 |
| 13.1.0 | 10.17.0 | 0.12.14 | 0.11.12 |
| 13.0.1 | 10.16.3 | 0.12.13 | 0.11.11 |
| 13.0.0 | 10.16.2 | 0.12.12 | 0.11.10 |
| 12.12.0 | 10.16.1 | 0.12.11 | 0.11.9 |
| 12.11.1 | 10.16.0 | 0.12.10 | 0.11.8 |
| 12.11.0 | 10.15.3 | 0.12.9 | 0.11.7 |
| 12.10.0 | 10.15.2 | 0.12.8 | 0.11.6 |
| 12.9.1 | 10.15.1 | 0.12.7 | 0.11.5 |
| 12.9.0 | 10.15.0 | 0.12.6 | 0.11.4 |
| 12.8.1 | 10.14.2 | 0.12.5 | 0.11.3 |
| 12.8.0 | 10.14.1 | 0.12.4 | 0.11.2 |
| 12.7.0 | 10.14.0 | 0.12.3 | 0.11.1 |
| 12.6.0 | 10.13.0 | 0.12.2 | 0.11.0 |
| 12.5.0 | 8.17.0 | 0.12.1 | 0.9.12 |
| 12.4.0 | 8.16.2 | 0.12.0 | 0.9.11 |
| 12.3.1 | 8.16.1 | 0.10.48 | 0.9.10 |
This is a partial list. For a complete list, visit https://nodejs.org/download/release
# 安装nodejs
nvm install v12.14.0
# 查看已经安装的所有版本
nvm ls
# 使用某个版本
nvm use v12.14.0
# 检测
C:\Users\fulsun> node -v
v12.14.0
C:\Users\fulsun> npm -v
6.13.4Linux
1
2
3
4
5
6
7
8
9
10
11# 查看nodejs可用版本
nvm ls-remote
# 安装nodejs
nvm install v12.14.0
# 查看已经安装的所有版本
nvm ls
# 使用某个版本
nvm use v12.14.0
linux下使⽤NVM
安装完后,使⽤起来就⾮常简单明快了,以下是⼀些常⽤功能
安装某⼀版本的node
1
2
3
4nvm install
nvm install --lts #安装最新的lts版本的node
nvm install node #安装最新版本的node
nvm install 6.14.4 #安装node版本6.14.4列出所有node版本
1
2nvm ls #本机所有版本
nvm ls -remote #远端所有版本切换、使⽤某⼀版本的node
nvm use
1
2
3nvm use --lts #使⽤最新的lts版本的node
nvm use node #使⽤最新版本的node
nvm use 6.14.4 #使⽤node版本6.14.4启动node
1
2
3
4nvm run
nvm run --lts #启动最新的lts版本的node
nvm run node #启动最新版本的node
nvm run 6.14.4 #启动node版本6.14.4使⽤某⼀版本执⾏
1
nvm exec 4.2 node --version
查询某⼀版本的安装位置
1
nvm which v12.14.0
继承既有的node modules.
- 可以使⽤
--reinstall-packages-from=node
来⾃动在新的node中安装上⼀版本已有的node modules
1
2nvm install node --reinstall-packages-from=node #从上⼀版本继承
nvm install 6 --reinstall-packages-from=5 #从某⼀版本继承- 可以使⽤
Linux下卸载nvm
- nvm的卸载是⼿动完成的,但是不复杂。
⾸先,删掉nvm⽂件
1
rm -rf "$NVM_DIR"
随后,修复环境变量,修改
1
2
3
4
5~/.bashrc (如果没有就去bash_profile找找)
# 删掉以下这⼏⾏
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion搞定。
npm常用命令
命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20npm install 安装模块
npm uninstall 卸载模块
npm update 更新模块
npm outdated 检查模块是否已经过时
npm ls 查看安装的模块
npm init 在项目中引导创建一个package.json文件
npm help 查看某条命令的详细帮助
npm root 查看包的安装路径
npm config 管理npm的配置路径
npm cache 管理模块的缓存
npm start 启动模块
npm stop 停止模块
npm restart 重新启动模块
npm test 测试模块
npm version 查看模块版本
npm view 查看模块的注册信息
npm adduser 用户登录
npm publish 发布模块
npm access 在发布的包上设置访问级别
npm package.json的语法npm使用国内镜像
1
2
3
4
5npm config get registry # https://registry.npmjs.org/
# 设置国内淘宝镜像
npm config set registry https://registry.npm.taobao.org/
# 还原官方
npm config set registry https://registry.npmjs.org/
nrm管理npm源
nrm 是一个用来管理npm源的工具
安装
1
sudo npm install -g nrm --registry=https://registry.npm.taobao.org
查看
1
2
3
4
5
6
7
8
9C:\Users\fulsun>nrm 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/nrm 常用命令
1
2
3
4
5nrm ls # 列出npm源
nrm use <registry> #选择源
nrm add <registry> <url> [home] #增加源
nrm delete <registry> #删除源
nrm test #测速
windowns修改npm安装目录
普通方式安装的默认的安装路径:
C:/用户/[用户名]/AppData/Roming/npm/node_meodules
scoop安装的不用修改, 位置在
\scoop\apps\nvm\current\nodejs\nodejs\node_modules
打开CMD,查看配置
1
2
3
4
5
6
7
8
9
10
11
12
13$ npm config ls
; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v8.11.3 win32 x64"
; builtin config undefined
prefix = "C:\\Users\\XXX\\AppData\\Roaming\\npm"
; node bin location = C:\Users\sfuli\local\nodejs\node.exe
; cwd = C:\Users\sfuli\local\blog\zy
; HOME = C:\Users\sfuli
; "npm config ls -l" to show all defaults.在其它物理盘建立文件夹如:
D:\develop\nodejs\localnpm
,将路径加入环境变量重新设置
1
2
3
4
5
6npm config set prefix "D:\develop\nodejs\localnpm"
npm config set cache "D:\develop\nodejs\localnpm\cache"
# 或在~目录下新建一个".npmrc"文件
prefix=C:\Users\fulsun\develop\nodejs\localnpm
cache=C:\Users\fulsun\develop\nodejs\localnpm\cache检查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16npm config ls
; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v8.11.3 win32 x64"
; userconfig C:\Users\sfuli\.npmrc
cache = "C:\\Users\\XXX\\local\\nodejs\\localnpm\\cache" //这里会改变
prefix = "C:\\Users\\XXX\\local\\nodejs\\localnpm"
; builtin config undefined
; node bin location = C:\Users\sfuli\local\nodejs\node.exe
; cwd = C:\Users\sfuli\local\blog\zy
; HOME = C:\Users\sfuli
; "npm config ls -l" to show all defaults.需要将上面设置的路径
(D:\develop\nodejs\localnpm)
添加到环境变量path中测试
1
2npm install express -g
-g意思是安装到全局目录下,即 D:\develop\nodejs\localnpm下面的node_modules
YARN
安装
1
npm install -g yarn
换镜像
1
2
3
4
5yarn config get registry
# 设置国内镜像-淘宝镜像
yarn config set registry https://registry.npm.taobao.org --global
# 设置官方镜像
yarn config set registry https://registry.yarnpkg.com配置
1
2yarn config get strict-ssl
yarn config set strict-ssl false使用
命令 说明 yarn init 初始化一个新项目 yarn add [package] 添加依赖包 yarn add [package]@[version] yarn add [package]@[tag] yarn add [package] –dev -D
将依赖项添加到不同依赖项类别中 yarn add [package] –peer yarn add [package] –optional yarn upgrade 升级所有依赖项,不记录在 package.json 中 yarn upgrade [package] yarn upgrade [package]@[version] yarn upgrade [package]@[tag] yarn upgrade –latest 忽略版本规则,升级到最新版本,并且更新 package.json yarn remove [package] 移除依赖包 yarn
或yarn install
安装项目的全部依赖 yarn install –force 强制重新下载安装 yarn global add [package] 全局安装 yarn [global] list 列出当前项目的依赖 yarn list –depth=0 限制依赖的深度 yarn cache clean 清理缓存
NPM更新依赖
简单更新
1
2
3
4
5
6# 查看npm最新版本
npm view npm version
# 查看所有版本
npm view npm versions
# 安装最新版本覆盖旧版本 npm update
npm install npm@9.2.0 -g项目对应依赖包一般保存在 package.json 文件中,相对应版本号的形式为
mojor.minor.patch
major 表示非兼容的重大 API 改变(主要的)
minor 表示向后兼容的功能性改变(次要的)
patch 表示向后兼容的 bug 修正(修补的)
1
2
3* 匹配最新的 major 版本依赖包,eg:比如 *1.2.3 会匹配 x.x.x,
^ 匹配最新的 minor 版本依赖包,eg: ^1.1.0 可以更新匹配所有 1.x.x 的包,不会更新匹配 2.x.x
~ 匹配最新的 patch 版本依赖包,eg: ~1.1.0 可以更新匹配所有 1.1.x 的包,不会更新匹配 1.2.x
更新指定依赖安装包(根据前缀符号更新,有时需要在 package.json 手动更改依赖包相应版本号再更新)
1
npm update tdesign-miniprogram -S (--save/-S or --save-dev/-D)
多个依赖包:
1
2
3
4
5
6
7# 批量更新依赖包的话推荐两个库:npm-check-updates和npm-check
# npm-check-updates:https://www.npmjs.com/package/npm-check-updates
npm install -g npm-check-updates
# 检查当前可升级依赖:
ncu
# 更新package.json文件:
ncu -u