Control de versiones de Node.js y NPM con NVM

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í .



All Articles