Node ejecuta JavaScript (tema 04) fuera del navegador: en servidores, en herramientas de línea de comandos y en la compilación del proyecto. npm es su gestor de paquetes: descarga dependencias y define los comandos de ejecución y compilación, con un papel análogo al de Maven en Java.
node --version node src/main.js # ejecuta un archivo node # REPL interactivo para probar fragmentos
npm init -y # crea package.json con valores por omisión npm install typescript # añade una dependencia al proyecto npm install --save-dev typescript # ... que solo se usa al compilar o probar
El package.json declara el proyecto y sus comandos:
{
"name": "importador-libros",
"version": "1.0.0",
"scripts": {
"build": "tsc",
"start": "node dist/main.js"
},
"devDependencies": {
"typescript": "^5.7.0"
}
}
| Sección | Contiene |
|---|---|
scripts | comandos del proyecto; se ejecutan con npm run build |
dependencies | paquetes que la aplicación necesita en ejecución |
devDependencies | herramientas de compilación y pruebas, como TypeScript |
npm start es la abreviatura de npm run start.npx ejecuta una herramienta instalada en el proyecto sin crear un script: npx tsc –version.npm install descarga los paquetes en node_modules/. Esa carpeta se regenera con otro npm install: no se sube al repositorio.
# .gitignore node_modules/ dist/ .env
package-lock.json guarda la versión exacta de cada paquete instalado y sí se sube al repositorio: todo el equipo y el sistema de CI instalan lo mismo.
importador-libros/ ├── src/ # código fuente │ └── main.js ├── dist/ # resultado de la compilación (tema 06) ├── node_modules/ ├── package.json ├── package-lock.json └── .gitignore
// src/main.js
console.log("Biblioteca lista");
El objeto process expone las variables de entorno definidas en el .env (tema 03): process.env.PORT.
Al pasar a TypeScript (tema 06) el código fuente de src/ cambia a extensión .ts y el compilado queda en dist/: la estructura del proyecto no cambia.
package.json, el primer paso siempre es npm install: node_modules no viaja con el código, y sin él faltan todas las herramientas del proyecto.