Introducción

Node.js es un entorno de ejecución basado en el lenguaje de programación JavaScript.

NVM

NVM significa Node Version Manager, una utilidad de línea de comandos que te permite instalar, administrar y trabajar con múltiples versiones de Node.js.

Instala NVM https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh:

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

El script clona el repositorio nvm en ~/.nvm y actualiza el archivo de perfil ~/.bashrc.

Cierra y vuelve a abrir tu terminal para comenzar a usar nvm, o ejecuta este comando:

$ source ~/.profile

A continuació puedes instalar cualquier versión de node.js utilitzano nvm.

Instala la última versión de node.js:

$ nvm install node
Downloading and installing node v21.7.1...
...
Now using node v21.7.1 (npm v10.5.0)
Creating default alias: default -> node (-> v21.7.1)

En lugar de especificar una versión concreta hemos utilizado el alias node para indicar que queremos la última versión.

Además, la primera versión instalada se convierte en la predeterminada:

$ nvm alias default
default -> node (-> v21.7.1)

También puedes instalar una versión específica:

$ nvm install 20.11.0
Downloading and installing node v20.11.0...
...
Now using node v20.11.0 (npm v10.2.4)

Ahora cuando ejecutas el comando node se ejecuta node.js con la versión v20.11.0:

$ node -v
v20.11.0

Aunque esto es temporal, ya que los nuevos shells comenzarán con la versión predeterminada de node.

Abre un nuevo shell y verifica que la version de node és la version predeterminada:

$ node -v
v21.7.1

$ nvm alias default
default -> node (-> v21.7.1)

Mira las versiones de node que tiene instaladas el usuario:

$ nvm ls
       v20.11.0
->      v21.7.1
default -> node (-> v21.7.1)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v21.7.1) (default)
stable -> 21.7 (-> v21.7.1) (default)
lts/* -> lts/iron (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
...
lts/iron -> v20.11.1 (-> N/A)

Puedes ver que tiene instalada la versión v20.11.0 y la versión v21.7.1.

También te muestra los alias predeterminados y si la versión está instalada para ese alias o no ( N/A).

  • iojs apunta a la última versión de io.js, un antiguo "fork" sin mantenimiento de Node.js.
  • nodey stable apuntan a la última versión de Node.js.
  • lts/* apunta a la última versión LTS de Node.js, que es la misma que lts/iron.
  • lts/aragon apunta a la última versión de LTS Aragón (que és Node.js 4)

Instala la útlima versión de erbium:

nvm install lts/erbium
Downloading and installing node v12.22.12...
...
Now using node v12.22.12 (npm v6.14.16)

Verifica que el comando nvm muestra que está instalada:

nvm ls | grep iron
lts/erbium -> v12.22.12

El término LTS hace referencia a Long Term Support, es decir, una versión que actualmente se encuentra con soporte por un período de 18 meses.

Luego de transcurrido ese tiempo, la versión pasará a modo mantenimiento por 12 meses.

ls-remote

Mira las versiones de node.js disponibles para la instalación:

$ nvm ls-remote
        v0.1.14
        ...
       v20.11.0   (LTS: Iron)
       v20.11.1   (Latest LTS: Iron)
        ...  
->      v21.7.1

Puedes ver que existen muchas versiones, demasiadas!

Para ver sólo las versiones LTS ejecuta el comando ls-remote con el "flag" --lts:

nvm ls-remote --lts 
         v4.2.0   (LTS: Argon)
         ...
       v20.10.0   (LTS: Iron)
       v20.11.0   (LTS: Iron)
->     v20.11.1   (Latest LTS: Iron)

Todavía son muchas versiones.

Si sólo queremos ver las versiones de una LTS específica podemos parametrizar el "flag" --lts:

$ nvm ls-remote --lts=Gallium
       v16.13.0   (LTS: Gallium)
       ...
       v16.20.1   (LTS: Gallium)
       v16.20.2   (Latest LTS: Gallium)
box@xtec:~$ 

Utilitzar una versión específica

En qualquier momento puedes seleccionar una versión diferente para la sesión actual.

Por ejemplo, si tenemos estas versiones:

$ nvm ls
->    v12.22.12
       v20.11.1
        v21.7.1

Podemos seleccionar la versión v20.11.1 con este comando:

nvm use v20.11.1
Now using node v20.11.1 (npm v10.2.4)

Si ejecutas el siguiente comando verás que las v

Para encontrar la versión de Nodo predeterminada configurada para el usuario actual, escriba:

nvm run default --version

Puede ejecutar un script de Node con la versión deseada de node.js usando el siguiente comando:

nvm exec 20.11.0 server.js

Paso 4: usar el archivo .nvmrc

El uso de un archivo .nvmrc en su aplicación especifica la versión de Node.js que se utilizará, lo que garantiza la coherencia en todos los entornos de desarrollo. Al incluir este archivo, los desarrolladores pueden cambiar automáticamente a la versión correcta de Node.js con el comando nvm use, lo que mejora la compatibilidad y reduce los problemas relacionados con la versión.

Para crear un archivo .nvmrc, simplemente ejecute el comando en el directorio raíz de su proyecto:

echo "20.11.0" > .nvmrc

Reemplazando “20.11.0” con la versión de Node.js que desee. Este archivo luego guía a nvm para que use la versión especificada usando el comando:

nvm use

Administrador de paquetes npm

npm es el administrador de paquetes estándar para Node.js.

Paquetes

Instala el paquete date-time:

$ npm install date-time

Crea un archivo package.json con este contenido:

A continuación ejecuta npm install para instalar todas las dependencias que el projecto necesita en la carpeta node_modules - si la carpeta no existe se crea automáticamente.

$ npm install

i Instalación de un solo paquete

También puede instalar un paquete específico ejecutando

npm install

Intento

Además, desde npm 5, este comando agrega hacia package.json de archivos dependencias . Antes de la versión 5, era necesario agregar la bandera --save.

A menudo verás más indicadores agregados a este comando:

--save-devinstala y agrega la entrada al package.jsonarchivo devDependencies --no-savese instala pero no agrega la entrada al package.json de archivos dependencias --save-optionalinstala y agrega la entrada al package.jsonarchivo opcionalDependencias --no-optionalevitará que se instalen dependencias opcionales

También se pueden utilizar taquigrafías de las banderas:

-S: --save -D: --save-dev -O: --save-optional

La diferencia entre devDependencies y dependencias es que las primeras contienen herramientas de desarrollo, como una biblioteca de pruebas, mientras que las segundas se incluyen con la aplicación en producción.

En cuanto a las dependencias opcionales, la diferencia es que una falla en la compilación de la dependencia no provocará que falle la instalación. Pero es responsabilidad de su programa manejar la falta de dependencia. Lea más sobre las dependencias opcionales . Actualizando paquetes

La actualización también es fácil ejecutando

npm update

Intento

npmcomprobará todos los paquetes en busca de una versión más nueva que satisfaga sus restricciones de versiones.

También puede especificar un único paquete para actualizar:

npm update

Intento Versionado

Además de las descargas simples, npmTambién gestiona el control de versiones , por lo que puedes especificar cualquier versión específica de un paquete, o requerir una versión superior o inferior a la que necesitas.

Muchas veces encontrará que una biblioteca sólo es compatible con una versión principal de otra biblioteca.

O un error en la última versión de una biblioteca, aún sin corregir, está causando un problema.

Especificar una versión explícita de una biblioteca también ayuda a mantener a todos exactamente en la misma versión de un paquete, de modo que todo el equipo ejecute la misma versión hasta el final. package.jsonEl archivo está actualizado.

En todos esos casos, el control de versiones ayuda mucho y npmsigue el estándar de versiones semánticas (semver).

Puede instalar una versión específica de un paquete ejecutando

npm install @

Intento Ejecución de tareas

El archivo package.json admite un formato para especificar tareas de línea de comando que se pueden ejecutar usando

npm run

Intento

Por ejemplo:

{ "scripts": { "start-dev": "node lib/server-development", "start": "node lib/server-production" } }

JSON

Es muy común utilizar esta función para ejecutar Webpack:

{ "scripts": { "watch": "webpack --watch --progress --colors --config webpack.conf.js", "dev": "webpack --progress --colors --config webpack.conf.js", "prod": "NODE_ENV=production webpack -p --config webpack.conf.js" } }

JSON

Entonces, en lugar de escribir esos comandos largos, que son fáciles de olvidar o escribir mal, puedes ejecutar

$ npm run watch $ npm run dev $ npm run prod

Intento

TODO

https://docs.npmjs.com/creating-a-package-json-file