Nuestra traducción anterior sobre las nuevas funciones de la versión 15 de Node.js fue muy bien recibida por los lectores de Habr, por lo que hoy decidimos continuar con el tema y contarte cómo configurar NVM con la versión 15 de Node.js y NPM 7 .
La versión 15 de Node.js se lanzó el 20 de octubre de 2020. Se envía con npm 7 y muchas características nuevas. ¿Has probado ya la nueva versión?
¡Pero espere un minuto! Node.js 15 y npm 7 contienen cambios importantes. Entonces, ¿no afectaría la actualización a los proyectos existentes?
En teoría, ¡puede doler!
Afortunadamente, tenemos NVM (Node Version Manager) para salvarnos de este peligro. Echemos un vistazo más de cerca a esta herramienta para actualizar las versiones de node.js y npm sin ningún problema.
Instalar NVM
nvm
administra las versiones de node.js y npm. Se instala para un usuario específico y se puede llamar por separado para cada shell.
nvm
funciona con cualquier shell compatible con POSIX (sh, dash, ksh, zsh, bash), incluidas las plataformas: unix, macOS y windows WSL.
nvm
se puede instalar usando los comandos curl o wget:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash $ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
Guión
install.sh
clona NVM repositorio en
~/.nvm
e intenta añadir las líneas de código del siguiente fragmento en el archivo de perfil deseado (
~/.bash_profile
,
~/.zshrc
,
~/.profile
o
~/.bashrc
).
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
En
~/.bash_profile
podemos ver que se agregan las líneas:
export NVM_DIR="/Users/fuje/.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
Usando NVM
Entonces, hemos instalado nvm. Ahora usamos este comando para instalar la última versión de node.js:
$ nvm install node
Downloading and installing node v15.4.0...
Downloading https://nodejs.org/dist/v15.4.0/node-v15.4.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v15.4.0 (npm v7.0.15)
Los datos de salida del ejemplo anterior indica que la NGP
7.0.15
se utiliza con node.js
15.4.0
. Vamos a revisar:
$ node -v v15.4.0 $ npm -v 7.0.15
También podemos especificar la versión requerida para la instalación. El formato semántico de la versión está determinado por SemVer :
$ nvm install 10.14.0
Downloading and installing node v10.14.0...
Downloading https://nodejs.org/dist/v10.14.0/node-v10.14.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v10.14.0 (npm v6.4.1)
Si la versión especificada ya estaba instalada, no se reinstala:
$ nvm install 10.14.0 v10.14.0 is already installed. Now using node v10.14.0 (npm v6.4.1)
Podemos mostrar todas las versiones instaladas:
$ nvm ls -> v10.14.0 v10.15.0 v10.16.0 v12.16.0 v13.9.0 v15.4.0 system default -> 12.16.0 (-> v12.16.0) node -> stable (-> v15.4.0) (default) stable -> 15.4 (-> v15.4.0) (default) iojs -> N/A (default) unstable -> N/A (default) lts/* -> lts/fermium (-> N/A) lts/argon -> v4.9.1 (-> N/A) lts/boron -> v6.17.1 (-> N/A) lts/carbon -> v8.17.0 (-> N/A) lts/dubnium -> v10.23.0 (-> N/A) lts/erbium -> v12.20.0 (-> N/A) lts/fermium -> v14.15.1 (-> N/A)
En los ejemplos de salida anteriores, el símbolo
->
indica que la versión actual de node.js es
10.14.0
. La flecha también representa valores para
default
(
12.16.0
),
node
(
15.4.0
) y
stable
(
15.4.0
).
nvm use
reemplaza la versión actual:
$ nvm use 12.16.0 Now using node v12.16.0 (npm v6.14.8) $ nvm use 10.16.0 Now using node v10.16.0 (npm v6.14.5) $ nvm use 13.9.0 Now using node v13.9.0 (npm v6.13.7) $ nvm use default Now using node v12.16.0 (npm v6.14.8) $ nvm use node Now using node v15.4.0 (npm v7.0.15) $ nvm use stable Now using node v15.4.0 (npm v7.0.15)
Es posible que se pregunte cómo es que
v10.16.0
usa una versión posterior de npm que
v13.9.0
. Esta tarea se puede resolver mediante los siguientes comandos:
$ nvm use 10.16.0 $ npm install -g npm@6.14.5
Este comando le permite obtener la última versión de npm compatible para la versión actual de Node.js:
$ nvm install-latest-npm
nvm use
instala la versión correcta solo para el shell actual. Si cambia el shell, se perderá la versión recién actualizada de node.js.
¿Cómo hago persistente una versión específica de Node.js?
La versión predeterminada es una que se distribuye a todos los shells.
El comando le
nvm alias
permite configurar la versión predeterminada.
$ nvm alias default 10.16.0
Para su comodidad, puede crear un archivo
.nvmrc
que acepte el formato SemVer
node
o
default
. Después de eso
nvm use
,
nvm install
,
nvm exec
,
nvm run
y
nvm which
utilizará la versión especificada en el archivo
.nvmrc
, a menos que otra línea de comandos.
$ cat .nvmrc
15.4.0
$ nvm use
Found '/Users/fuje/.nvmrc' with version <15.4.0>
Now using node v15.4.0 (npm v7.0.15)
Podemos comprobar la versión actual con el siguiente comando:
$ nvm current v15.4.0
ls-remote
muestra todas las versiones disponibles, pero esté preparado para una lista muy larga.
$ nvm ls-remote
Tenga en cuenta que el nombre de la versión abreviado acorta significativamente la lista completa.
$ nvm ls-remote 15 v15.0.0 v15.0.1 v15.1.0 v15.2.0 v15.2.1 v15.3.0 -> v15.4.0
nvm which
indica la ruta al ejecutable donde
nvm
fue instalado. Hemos instalado versiones de node.js como
10.14.0
,
10.15.0
y
10.16.0
. Aquí están los resultados
nvm which
:
$ nvm which 10.14.0
/Users/fuje/.nvm/versions/node/v10.14.0/bin/node
$ nvm which 10.15.0
/Users/fuje/.nvm/versions/node/v10.15.0/bin/node
$ nvm which 10.16.0
/Users/fuje/.nvm/versions/node/v10.16.0/bin/node
$ nvm which 10.15
/Users/fuje/.nvm/versions/node/v10.15.0/bin/node
$ nvm which 10.12
N/A: version "v10.12" is not yet installed.
You need to run "nvm install 10.12" to install it before using it.
$ nvm which 10
/Users/fuje/.nvm/versions/node/v10.16.0/bin/node
La versión especificada de Node.js se puede usar directamente para iniciar aplicaciones:
$ nvm run 10.15.0 app.js
Alternativamente, este comando se ejecuta
node app.js
con la variable PATH que indica la versión
10.15.0
.
$ nvm exec 10.15.0 node app.js
Si necesita más comandos nvm, ejecute el comando
help
:
$ nvm --help
Actualización de NVM
Podemos usar
nvm
node.js y npm para actualizar. Pero, ¿cómo me actualizo
nvm
?
¡Intentemos!
Antes de actualizar, lo hemos instalado
nvm
0.34.0
.
Actualizamos a la versión 0.37.2.
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13527 100 13527 0 0 23046 0 --:--:-- --:--:-- --:--:-- 23083
=> nvm is already installed in /Users/fuje/.nvm, trying to update using git
=> => Compressing and cleaning up git repository
=> nvm source string already in /Users/fuje/.bash_profile
=> bash_completion source string already in /Users/fuje/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:
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
Como se indica en el resultado, debemos cerrar y volver a abrir el terminal para poder usar la nueva versión:
$ nvm --version 0.37.2
En comparación con la versión
0.34.0
, la versión ha
0.37.2
agregado una función
nvm set-colors
para la salida a la consola. Muestra los siguientes colores de
forma predeterminada
nvm ls
:
Establecer nuevos colores:
$ nvm set-colors cgYmW
nvm ls
muestra la salida con nuevos colores:
Conclusión
nvm
simplifica el control de versiones de node.js y npm. Ahora estamos definitivamente listos para pasar a node.js 15 y npm 7. Espero que esto le haya resultado útil. Otras publicaciones del autor se pueden encontrar aquí .