n或nvm用于管理节点版本-为每个版本保留全局模块是一个好主意吗?

6 node.js

我一直在为节点使用docker容器,不幸的gulp watch是,在OSX上,它的运行速度极慢且有漏洞。所以我回到了在主机上安装工具的地方:(很遗憾。

n和之间选择nvm

我发现它们之间的一个主要区别是全局软件包,n对所有版本都保留单个全局存储库,并且nvm使em分开。

我没有从事过许多node.js项目,但我觉得这是一个重要的区别,但是我不确定这在现实生活中是否真的很重要。

有任何想法吗?

Qiu*_*ang 14

我会说如果你不需要在不同的节点版本上工作并来回切换,n 就容易多了。例如,当您使用 nvm 切换到不同的节点版本时,所有旧版本的全局包都“消失了”,您将不得不为新版本再次安装它们,对于生产环境来说这是一件好事,但对于dev env 很烦人。

我有一个从节点 6(mac 和 Ubuntu)开始的项目,在过去的 2 年里,我所做的只是首先升级到节点 8(主要是使用 async/await 来避免回调地狱)然后升级到节点 10(主要是为了获得使用最新的 V8 引擎获得更好的性能)。我试过 nvm 和 n,n 绝对更容易。

---- 更新 2020.11.16 ----

在获得更多 n 的经验后,我发现 n 有一个恼人的问题:当 n 安装失败(可能是由于网络问题)时,它也会损坏我现有的节点,以下是一个示例。那我必须重新安装节点。

AES-demo ? sudo n lts                                                                                                                               
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to nodejs.org:443

  Error: failed to download version index (https://nodejs.org/dist/index.tab)

// I guess it was due to the network failure because it then succeeded
AES-demo ? sudo n lts                                                                                                                                 

  installing : node-v14.15.1
....

//But then I hit the error, which means node was broken
/usr/local/bin/n: line 636: /usr/local/bin/node: No such file or directory
AES-demo ? node -v                                                                                                                                    
zsh: command not found: node 
Run Code Online (Sandbox Code Playgroud)

我针对 n https://github.com/tj/n/issues/634打开了一个问题。

该问题已在“v6.7.1 中发布的改进”中修复。所以一定要安装这个最新版本(如2020.11.23)

  • 不过,以下内容将使它不再那么烦恼: `nvm install --lts --reinstall-packages-from=OLD_VERSION` 或 `nvm reinstall-packages <version>` (2认同)

Raz*_*lex 6

n是Node模块,可以由npm安装,并且nvm是Bash脚本。

n并且nvm它们仍然是活跃的项目,因为与在Windows上进行更新相比,它更麻烦。它们仍在积极维护中,并且都在不到10天之前进行了修改。

我发现n它更容易使用,因为它可以由npm安装,但是两个脚本都能达到目的;)

  • “如果你想在你的应用程序中保留一个结构”是如此模糊。这句话到底是什么意思? (4认同)