Requisitos para seguir este tutorial:
- Instalar Node.js
- Instalar Visual Studio Code
- El código propuesto es muy sencillo, pero no viene mal tener unos conocimientos básicos de TypeScript
Creamos el directorio del proyecto e inicializamos el proyecto Node.js:
mkdir learning-nodejs
cd learning-nodejs
npm init -yEsto creará el descriptor del proyecto en el fichero package.json.
En este caso, en vez de usar JavaScript, usaremos TypeScript, por lo que lo siguiente será inicializarlo y configurarlo.
En la raíz del proyecto ejecutamos el siguiente comando:
npm install --save-dev typescriptLa opción
--save-devindica que TypeScript es una dependencia de desarrollo.
Debemos tener en cuenta que Node.js no es capaz de ejecutar directamente código TypeScripyt, sino que debe transpilarse (compilarse) a JavaScript para poder ejecutarlo. En el fichero tsconfig.json podemos definir las opciones del compilador de TypeScript:
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"rootDir": "src",
"strict": true
},
"lib": ["es2015"]
}Las opciones más importantes son:
module: Define el sistema de módulos que se usará. En este caso, CommonJS.target: Define la versión de ECMAScript a la que se compilará el código. En este caso, ES6.outDir: Define el directorio donde se guardarán los ficheros JavaScript generados.rootDir: Define el directorio donde se encuentran los ficheros TypeScript.strict: Activa todas las opciones de comprobación de TypeScript.
Estas opciones son de ejemplo. Habría que adaptarlas a nuestras necesidades.
Ahora instalamos Express, que es un framework web para Node.js que nos permitirá crear el servidor. También instalamos @types/express para tener las definiciones de TypeScript de Express:
npm install express
npm install --save-dev @types/expressA continuación creamos el directorio src, que es dónde guardaremos el código TypeScript, y luego creamos el fichero src/server.ts:
mkdir src
code src/server.tsÉste sería el contenido del fichero src/server.ts (la extensión .ts indica que es un fichero TypeScript):
import express from 'express';
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello Node.js!');
});
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`);
});Es un pequeño servidor que responde con un mensaje de texto (
Hello Node.js!) cuando se accede a la raíz del servidor.
Para compilar el código TypeScript, podemos hacerlo manualmente ejecutando el siguiente comando en la raíz del proyecto:
npx tscEsto generará el fichero dist/server.js. El directorio dist es el directorio de salida que hemos definido en el fichero tsconfig.json.
Ahora, para ejecutar nuestra aplicación Node.js, ejecutamos el siguiente comando:
node dist/server.jsPara no tener que compilar el código manualmente cada vez que hagamos un cambio, podemos automatizar la compilación con nodemon y ts-node.
Instalamos nodemon y ts-node:
npm install --save-dev nodemon ts-nodeAmbas son dependencias de desarrollo.
Y añadimos un script en el fichero package.json:
{
"scripts": {
"start": "nodemon --exec ts-node src/server.ts"
}
}Ahora podemos ejecutar el servidor con el siguiente comando:
npm startTambién podemos añadir un script para compilar el código TypeScript:
{
"scripts": {
"build": "tsc"
}
}De manera que podemos compilar el código con el siguiente comando:
npm run buildEl código compilado, es decir, transpilado a JavaScript, se guardará en el directorio
dist.