Instalando Node con NVM y Yarn en Mac

Juan Carlos Pulido S.
Alephart-Stories
Published in
4 min readFeb 25, 2019

Como desarrollador fullstack es importante tener a disposición distintas versiones de node y poder cambiar entre ellas sin recurrir a instalar todo un entorno cada vez. Igualmente no siempre queremos usar npm [npx], también tenemos yarn y queremos usar sus ventajas.

Para lo primero, de usar distintas versiones de node y cambiar cuando se requiera, podemos usar nvm. Un método adecuado para instalar nvm es seguir las instrucciones de los mismos creadores de nvm https://github.com/creationix/nvm.

Entonces, en nuestra terminal mac (o hyper como yo :) sigamos las instrucciones:

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash

Esto nos instala nvm y nos indica como configurar las variables de entorno en el perfil bash: (~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc). Algunos o todos estos archivos los encontraremos en el Home de nuestro User en Mac.

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

Después de ajustar las variables de entorno en nuestro perfil bash, restauramos la terminal y pasamos a instalar node. Primero revisemos que si tenemos bien configurado nvm:

$ nvm --version

En mi caso tengo instalada la versión 0.34.0.

Ahora si instalamos la última versión de node:

$ nvm install node

Recuerda que nvm te permite instalar varias versiones de node y poder usarlas cuando requieras.

Vamos a instalar la version 10.15.1:

$ nvm install 10.15.1

Veamos que tenemos instalado ahora:

$ nvm ls       v10.15.1
-> v11.10.0
default -> node (-> v11.10.0)
node -> stable (-> v11.10.0) (default)
stable -> 11.10 (-> v11.10.0) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/dubnium (-> v10.15.1)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.16.0 (-> N/A)
lts/carbon -> v8.15.0 (-> N/A)
lts/dubnium -> v10.15.1

Tenemos dos versiones de node y por defecto la v.11.10.0.

$ node --version
v11.10.0
$ npm --version
6.7.0

Si queremos usar alguna versión en particular de las ya instaladas pues simplemente con nvm:

$ nvm use v10.15.1

ó podemos activar alguna versión por defecto:

$ nvm alias default v10.15.1

Ahora vamos a istalar yarn para tener nuestro arsenal listo y sin conflictos. Vamos a usar Homebrew para instalar yarn:

$ brew install yarn --ignore-dependencies

En las instrucciones de instalación de yarn se sugiere excluir la instalación de node si se usa nvm o similares, para que la versión de node usada con nvm ignore las dependencias y así evitamos conflictos.

Igualmente si yarn no se encuentra en nuestro PATH, modificamos nuestro perfil para permitir que corra desde cualquier directorio y de forma global:

export PATH="/usr/local/opt/yarn:$PATH"
export PATH="$PATH:`yarn global bin`"

Reiniciamos la terminal y comprobamos la instalación de yarn:

$ yarn --version
1.13.0

Listo!…

Tenia mi entorno node y ahora tengo conflictos!

Me anime a escribir este pequeño instructivo por que ya contaba con este entorno configurado y se me presento conflictos con nvm, npm y yarn en algunas terminales, ejemplo en VS Code:

nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v10.12.1 --silent` to unset it.

Básicamente tenia instalado nvm con Homebrew y este último reescribe el perfil del bash configurando esta línea:

source $(brew --prefix nvm)/nvm.sh

No basta con eliminar la línea, eso afecta a nvm con Homebrew. Lo que se debe hacer para ajustar todo de forma correcta es desinstalar el entorno node y volviendo a configurar según lo explicado arriba.

Desinstalando el entorno node

Para ir limpiando todo adecuadamente vamos a desinstalar las versiones de node que tenemos con nvm anterior. Veamos una lista de las versiones node instaladas:

$ nvm ls
4.9.1
5.12.0
6.16.0
7.9.0
8.8.1
8.15.0
9.11.2
-> v10.12.1

Ahora desinstalemos:

$ nvm uninstall 4.9.1
$ nvm uninstall 5.12.0
$ nvm uninstall 6.16.0

y asi para todas las versiones con que contemos.

También podríamos usar:

$ rm -rf "$NVM_DIR"

y con esto eliminamos todo, pero… recuerden que tenia instalado nvm con homebrew.

Ahora eliminemos nvm:

$ brew uninstall nvm

Quitaremos del perfil bash:

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

Finalmente desinstalar yarn:

$ brew uninstall yarn

Reiniciamos la terminal y listos!.

Es posible que tengamos basura de estas instalaciones u otros intentos de instalar node en nuestro sistema. Vamos a cerciorarnos manualmente de limpiar lo mejor posible.

Note que algunos de los directorios nombrados a continuación dependerán del método de instalación que se haya usado:

- Borrar node y/o node_modules de /usr/local/lib
- Borrar node y/o node_modules de /usr/local/include
- Borrar node, node-debug, y node-gyp de /usr/local/bin
- Borrar .npm del directorio home
- Borrar .node-gyp del directorio home
- Borrar .node_repl_history del directorio home
- Borrar node* de /usr/local/share/man/man1/
- Borrar npm* de /usr/local/share/man/man1/
- Borrar node.d de /usr/local/lib/dtrace/
- Borrar node de /opt/local/bin/
- Borrar node de /opt/local/include/
- Borrar node_modules de /opt/local/lib/
- Borrar node de /usr/local/share/doc/
- Borrar node.stp de /usr/local/share/systemtap/tapset/

Recuerde que para borrar puede usar el comando rm:

# borrar archivo
$ rm nombre.archivo
# borrar directorio
$ rm -rf nombreDirectorio
# cuando se requiera permisos de root
$ sudo rm nombre.archivo
$ sudo rm -rf nombreDirectorio

Este proceso me permitió limpiar debidamente mi entorno node y posteriormente hacer una instalación limpia y bien configurada con el proceso mencionado arriba.

--

--

Juan Carlos Pulido S.
Alephart-Stories

Developer: javascript | react | vue | graphql | c# | blockchain