¿Cómo trabajar Node.js con Typescript?
En esta guía aprenderás a trabajar con Node.js y Typescript, con una alternativa moderna y sin tantas complicaciones.
Recursos
- https://www.typescriptlang.org/: Typescript es un superconjunto de JavaScript que añade tipado estático y otras características a JavaScript.
- https://www.npmjs.com/package/@types/node: @types/node es un paquete que contiene las definiciones de TypeScript para Node.js.
- https://tsx.is: tsx significa TypeScript Execute y es una mejora de Node.js para ejecutar TypeScript.
- https://github.com/privatenumber/pkgroll: pkgroll es el empaquetador recomendado para proyectos que utilizan tsx . Lo desarrolló el mismo autor y se utiliza para compilar tsx.
Node + Typescript + tsx + pkgroll
Inicializar el proyecto:
npm init -y
Instalar dependencias:
npm i -D tsx pkgroll typescript @types/node
Directorio de trabajo:
.
├── dist
├── node_modules
├── src
│ └── index.ts
├── package.json
└── tsconfig.json
└── .gitignore
Crear archivo: tsconfig.json
{
"compilerOptions": {
"target": "es2022",
"strict": true,
"outDir": "./dist",
"moduleDetection": "force",
"module": "Preserve",
"resolveJsonModule": true,
"allowJs": true,
"esModuleInterop": true,
"isolatedModules": true
}
}
package.json: debes agregar los scripts necesarios para compilar y ejecutar el proyecto. Además configurar el exports (donde terminarán los archivos compilados) y el type (para que Node.js pueda reconocer el módulo).
{
"exports": "./dist/index.js",
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"build": "pkgroll",
"start": "node dist/index.js"
},
"devDependencies": {
"@types/node": "^22.9.0",
"pkgroll": "^2.5.1",
"tsx": "^4.19.2",
"typescript": "^5.6.3"
}
}
src/index.ts: Crea este archivo para probar que todo funcione correctamente.
console.log("Hello, world!");
Run: ejecuta el proyecto con el siguiente comando.
npm run dev
Build: compila el proyecto con el siguiente comando.
npm run build
Start: ejecuta el proyecto compilado con el siguiente comando.
npm start
.gitignore: Agrega el archivo .gitignore para evitar subir los módulos de Node.js a tu repositorio.
node_modules
Con estas configuraciones ya puedes trabajar con Node.js y Typescript de una forma más moderna y sin tantas complicaciones.
¿nodemon? ¿ts-node?
Nótese que no necesitamos nodemon, ts-node, ni otras herramientas para trabajar con Node.js y Typescript. Todo se hace con tsx.