轻松管理你的 Node 版本

xutw4318 8年前
   <p>玩 Node.js 的小伙伴们都知道,现在 Node 的版本更新很快,目前最新稳定版已经更新到 v7.6.0 了,而生产环境一般选择使用 <a href="/misc/goto?guid=4959738592985124720" rel="nofollow,noindex">LTS</a> (Long-term Support)版本,目前最新的是 v6.10.0。</p>    <p>新版的 Node 7.x.x 有非常有用的更新,那就是支持了 --harmony-async-await。这样就不用依赖 babel 来使用 async/await 特性了。</p>    <p>但是,如何让 7.x.x 和 LTS 的 6.x.x 并存呢?就需要用 Node 版本管理工具了。</p>    <p>之前常用的 Node 版本管理工具是 nvm ,这是一个 shell 工具,能够比较方便地切换 Node 版本。</p>    <p>不过今天我要介绍给大家的是另一款更简单好用的 Node 版本管理工具,它本身是一个 Node 模块,叫做 <a href="/misc/goto?guid=4959669330544263339" rel="nofollow,noindex">n</a> ,它是由 <a href="/misc/goto?guid=4959669330544263339" rel="nofollow,noindex">TJ</a> 大大开发的,强调简单化的版本管理工具:</p>    <p>Node.js version management: no subshells, no profile setup, no convoluted API, just simple.</p>    <h3>安装 n</h3>    <p>要安装 n 非常简单,它本身是一个 NPM 模块,因此:</p>    <pre>  <code class="language-javascript">npm -g install n</code></pre>    <h3>使用和设置</h3>    <p>要使用 n 安装特定版本的 node,只需要如下命令:</p>    <pre>  <code class="language-javascript">n stable #安装最新的稳定版  n lts #安装最新的 LTS 版  n 6.9.0 #安装特定的 v6.9.0 版本</code></pre>    <p>安装完成多个版本后,直接输入不带参数的 n 命令,会出现一个已安装版本的列表:</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/d48513fefe84c4fabd41d6babe981bfc.png"></p>    <p>用键盘上下键选择版本,然后回车,就可以切换默认 Node 版本。</p>    <h3>直接启动不同版本的 Node</h3>    <p>假如我们将默认的 Node 版本设置为 6.10.0 了,而我们要使用 7.6.0 启动某个应用,也非常简单,只需要:</p>    <pre>  <code class="language-javascript">n use 7.6.0 index.js</code></pre>    <p>于是,我们可以这么用:</p>    <p>async.js</p>    <pre>  <code class="language-javascript">'use strict'    let randomDelay = () => new Promise(function(resolve){      var delay = Math.round(Math.random() * 1000);      setTimeout(function(){          console.log('delay ' + delay + ' ms');          resolve(delay);      }, delay);  });    async function main(){      await Promise.all([randomDelay(), randomDelay()]);      console.log('pass');      await randomDelay();  }    main();</code></pre>    <pre>  <code class="language-javascript">n use 7.6.0 async.js</code></pre>    <p>你会看到类似下面这样的输出结果,说明我们不需要 babel,直接可以用 Node 7.6.0 支持 async/await 了。</p>    <pre>  <code class="language-javascript">delay 252 ms  delay 964 ms  pass  delay 536 ms</code></pre>    <p>最后,我们可以创建一个快捷的命令:</p>    <pre>  <code class="language-javascript">echo alias node7="\"n use 7.6.0 --harmony-async-await\"" >> ~/.bashrc  source ~/.bashrc</code></pre>    <p>这样我们就可以愉快地使用 node v7.x.x 运行我们的 js 了:</p>    <pre>  <code class="language-javascript">node7 async.js</code></pre>    <p> </p>    <p>来自:https://www.h5jun.com/post/manage_node_with_n.html</p>    <p> </p>