n和nvm区别
在 node 的版本管理工具中,nvm 自然声名远扬,然而我们也不能忘了来自 TJ 的 n。这两种,是目前最主流的方案。
关于这两个工具如何安装和使用,这里不再多说,请见它们各自的主页:
creationix/nvm
TJ
接下来我们着重关注一下 nvm 和 n 的运作机制和特性。
1、n
n 依赖于 node
n 是一个需要全局安装的 npm package。
npm install -g n
这意味着,我们在使用 n 管理 node 版本前,首先需要一个 node 环境。我们或者用 Homebrew 来安装一个 node,或者从官网下载 pkg 来安装,总之我们得先自己装一个 node——n本身是没法给你装的。
然后我们可以使用 n来安装不同版本的node。在安装的时候,n会先将指定版本的node存储下来,然后将其复制到我们熟知的路径/usr/local/bin,非常简单明了。当然由于n会操作到非用户目录,所以需要加 sudo 来执行命令。 所以这样看来,n 在其实现上是一个非常易理解的方案。 but ,n会出现全局模块无法更新的问题 ⚠️ 使用npm不要使用n
2、nvm
我们再来看 nvm。不同于 n,nvm 不是一个 npm package,而是一个独立软件包。这意味着我们需要单独使用它的安装逻辑:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
或者使用 Homebrew 来安装。(mac安装Homebrew)
brew install nvm
出现下图代表安装成功 安装成功之后,还不能直接使用nvm命令,需要进行以下配置:
打开 .bash_profile 这个文件
open ~/.bash_profile
把下面的内容复制到 .bash_profile 这个文件后面并保存
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && \. "/usr/local/opt/nvm/nvm.sh" # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
执行
source .bash_profile
在 ~/.bash_profile 中配置了环境变量, 可是每次重启终端或者打开新的命令窗口后,配置的环境变量就会失效.需要重新执行 : $source ~/.bash_profile,才能重新生效。 原因是:自己安装了zsh,zsh加载的是 ~/.zshrc文件,而 ‘.zshrc’ 文件中并没有定义任务环境变量。 解决办法:在~/.zshrc文件最后,增加一行:
source ~/.bash_profile
在这之后,mac 每次启动终端都会提示 zsh compinit: insecure directories, run compaudit for list. Ignore insecure 然后我们可以使用 nvm 来安装不同版本的 node。
在安装的时候,nvm 将不同的 node 版本存储到 ~/.nvm// 下,然后修改 $PATH,将指定版本的node路径加入,这样我们调用的 node 命令即是使用指定版本的 node。
nvm 显然比 n 要复杂一些,但是另一方面,由于它是一个独立软件包,因此它和 node 之间的关系看上去更合乎逻辑:nvm 不依赖 node 环境,是 node 依赖 nvm;而不像 n 那样产生类似循环依赖的问题。
如何选择?
这样看下来,nvm 和 n 的差异还是比较大的,具体体现在:
安装简易度。nvm 安装起来显然是要麻烦不少;n 这种安装方式更符合 node 的惯性思维。见仁见智吧。 系统支持。注意, nvm 不支持 Windows。 对全局模块的管理。n 对全局模块毫无作为,因此有可能在切换了 node 版本后发生全局模块执行出错的问题;
nvm 的全局模块存在于各自版本的沙箱中,切换版本后需要重新安装,不同版本间也不存在任何冲突。
关于 node 路径。n 是万年不变的 /usr/local/bin; nvm 需要手动指定路径。 使用 nvm 管理不同版本的 node 与 npm
怎么选:
如果你使用 Windows,那没得选了,使用 n,或者换一台 Mac。 如果你会频繁切换 node 版本(比如本地经常测试最新版的特性,同时又要兼顾代码在生产环境的兼容性),那么从全局模块兼容性的角度考虑,只能使用 nvm。 如果你是一个轻量级的用户,不需要担心兼容性的问题,更关心 node 安装和使用上的体验,那么选择 n。 你如果要问,博主最终选用了谁?我会说,我选择了更流行的那一个。
npm常用命令
1. nvm list 是查找本电脑上所有的node版本
- nvm list 查看已经安装的版本
- nvm list installed 查看已经安装的版本
- nvm list available 查看网络可以安装的版本
2. nvm install
3. nvm install stable 安装最新稳定版本
4. nvm use
5. nvm ls 列出所有版本
6. nvm current显示当前版本
7. nvm alias
8. nvm unalias
9. nvm reinstall-packages
10. nvm on 打开nodejs控制
11. nvm off 关闭nodejs控制
12. nvm proxy 查看设置与代理
13. nvm node_mirror [url] 设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
nvm npm_mirror [url] 设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是: https://github.com/npm/npm/archive/.
14. nvm uninstall
15. nvm use [version] [arch] 切换制定的node版本和位数
16. nvm root [path] 设置和查看root路径
17. nvm version 查看当前的版本
参考阅读
发表评论