RSS Feed

Usando distintas versiones de node

0

julio 26, 2012 by - @MatiasArriola

Un escenario bastante común es encontrarse con:

> varios proyectos en node
> escritos en distintos momentos
> con dependencias a otros proyectos
> dependencias que funcionan bajo X versión de node
> varios desarrolladores que tienen distintas versiones de node

Eso aumenta la probabilidad de confusión, errores y pérdida de tiempo ( que no es lo que buscamos ).
Node se encuentra en actividad permanente, y hay muchas versiones dando vueltas. Si bien los cambios que se van haciendo, en su mayoría, son compatibles hacia atrás, seguramente no sepamos el changelog de memoria, ni querramos correr algún tipo de riesgo.

En el package.json de nuestro proyecto podemos especificar la versión de node con la que sabemos que funciona. Por ejemplo, cheerio corre en versiones mayores o iguales a 0.6.

  "engines": {
    "node": ">= 0.6"
  }

La definición/uso de “engines” la podemos encontrar en el sitio de npm: http://npmjs.org/doc/json.html#engines

nave

nave es una utilidad desarrollada por @izs, que nos permite tener conviviendo distintas versiones de node, y cambiar entre ellas fácilmente.

Una opción es simplemente clonar el proyecto, y correr nave.sh.
Otra, es instalarlo por NPM:

npm install -g nave

Después, el uso es bastante sencillo e intuitivo.
Instalar (descargar y buildear) una versión de node:

nave install 0.8.4

Donde 0.8.4 es la versión, y puede ser reemplazado por stable o latest.

Usar la versión que querramos

nave use 0.8.4

(si cuando hacemos use, no tenemos instalada esa versión, nave la va a instalar automáticamente)

Listar las versiones que tenemos instaladas:

nave ls

Listar las versiones que existen

nave ls-remote

Un par, no?

Y a nunca olvidarse de checkear la versión que en efecto vamos a ejecutar:

node -v

nave trabaja con subshells, lo que significa que si hacemos nave use 0.4, entonces cuando cerremos la consola actual o abramos una nueva consola, no vamos a seguir sobre 0.4 sino que sobre la versión posta de node que teníamos inicialmente.

Para los usuarios de node bajo windows, esta no es una solución, ya que nave requiere de bash para funcionar.

Otras alternativas

Existen otras muy buenas alternativas: NVM (Node Version Manager) y n. La finalidad de ambas es la misma y el uso es muy parecido.
La principal diferencia radica en que no trabajan con subshells, entonces cada vez que cambiemos de versión, el cambio se hará de manera global (no se perderá al cambiar de consola).