Kodokon kodokon.com

Módulos ES y npm: organizar tu proyecto

Estructuras un proyecto de Node con package.json, módulos ES, dependencias de npm y scripts.

9 min · 3 preguntas

Abrir esta lección en Kodokon

Un proyecto real no cabe en un solo archivo: lo divides en módulos, archivos que exportan lo que ofrecen e importan lo que necesitan. Ya conoces la sintaxis import / export del curso de JavaScript; veamos cómo Node la habilita. Todo empieza con package.json, la tarjeta de identidad de tu proyecto: un archivo en formato JSON que describe su nombre, su versión y su configuración. Para crearlo, entra en una carpeta vacía y ejecuta npm init -y (la opción -y acepta todas las respuestas por defecto). Luego añade la línea "type": "module": le indica a Node que tus archivos .js usan módulos ES.

JSON
{
  "name": "my-project",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node main.js",
    "dev": "node --watch main.js"
  }
}
Tu package.json después de npm init -y, completado con la línea type y dos scripts que usaremos más adelante.

Creemos dos archivos en esta carpeta: math.js exporta una función, main.js la importa. Un detalle específico de Node: la importación de un archivo local debe empezar con ./ y terminar con la extensión .js. Ambas cosas son obligatorias, a diferencia de lo que toleran algunas herramientas web.

JAVASCRIPT
// math.js
export function add(a, b) {
  return a + b;
}

// main.js
import { add } from "./math.js";

console.log(add(2, 3));
Dos archivos separados. Ejecuta node main.js: aparece el resultado 5.

La gran fortaleza de npm es su biblioteca mundial de paquetes: código escrito por otros, listo para usar. El comando npm install descarga un paquete en la carpeta node_modules de tu proyecto y lo añade a la sección dependencies de package.json: la lista de paquetes que tu proyecto necesita para funcionar. Un archivo package-lock.json, creado automáticamente, registra las versiones exactas instaladas, para que todo el mundo obtenga lo mismo. Probemos con chalk, un paquete que colorea el texto que se muestra en la terminal.

BASH
npm install chalk
Después de este comando, chalk aparece en dependencies y en node_modules; luego puedes importarlo como cualquier módulo.

Un último pilar: los scripts de npm, atajos de comandos declarados en la sección scripts de package.json. npm run dev ejecuta el comando guardado con el nombre dev, por muy largo que sea el comando real. Nuestro script dev usa node --watch, una opción que reinicia automáticamente el programa cada vez que un archivo cambia: muy cómodo durante el desarrollo.

BASH
npm run start
npm run dev
Cada comando ejecuta el script del mismo nombre. Detén el modo watch con Ctrl+C.

Prueba de conocimientos

Comprueba que has retenido los puntos clave de esta lección.

  1. ¿Cuál es la función del archivo package.json?
    • Describir el proyecto: nombre, versión, scripts y dependencias
    • Contener el código JavaScript principal del proyecto
    • Almacenar el código de los paquetes descargados
    • Reemplazar la carpeta node_modules
  2. ¿Qué ocurre cuando ejecutas npm install chalk?
    • chalk se copia directamente en tu archivo main.js
    • chalk solo se descarga, sin dejar rastro
    • chalk se coloca en node_modules y se añade a dependencies
  3. ¿Por qué añadir la línea type module en package.json?
    • Para que npm instale los paquetes más rápido
    • Para que Node lea los archivos .js como módulos ES (import/export)
    • Para publicar el proyecto en npm automáticamente