Utiliser Typescript avec Node.js

Banner - Utiliser Typescript avec Node.js

Pour utiliser Typescript côté serveur, on peut choisir Deno, le moteur d'exécution Typescript conçu par le créateur de Node.js. Problème, il n'est pas encore stable. La seconde solution consiste à transpiler notre Typescript avant de l'exécuter avec Node.js. Il existe déjà des tutoriels sur le sujet, mais peu d'entres eux parlent de Backpack. C'est un module bundler pour Node.js basé sur Webpack.

Backpack

On commence par installer Backpack

yarn add -DE backpack-core

Ensuite on va installer Koa qui sera notre serveur

yarn add -E koa

On créé ensuite le serveur dans un fichier se situant dans

src/index.js
. C'est le point d'entrée par défaut de Backpack

// src/index.js
const Koa = require("koa");

const app = new Koa();

app.use(ctx => {
  ctx.body = "Jon Snow meurt saison 5 épisode 10";
});

app.listen(3000);
console.log("listening on port 3000");

Enfin on ajoute les scripts dans notre package.json

{
  "scripts": {
    "dev": "backpack",
    "build": "backpack build"
  }
}

On lance un

yarn dev
et...

...Backpack bundle nos sources Javascript sans problème

Ajout de Typescript

On commence par ajouter Typescript, ainsi que les types pour Node et Koa

yarn add -DE typescript @types/node @types/koa

Puis on initialise une configuration Typescript avec

yarn tsc --init

Il faut renommer le fichier

src/index.js
en
src/index.ts
puis mettre à jour le code.

// src/index.ts
import Koa, { Context } from "koa";

const app: Koa = new Koa();

app.use((ctx: Context) => {
  ctx.body = "Jon Snow meurt saison 5 épisode 10";
});

app.listen(3000);
console.log("listening on port 3000");

Desormais si je lance de nouveau un

yarn dev
j'obtiens...

...une belle erreur.

L'erreur est explicite, Backpack ne parvient pas à trouver un fichier dans

src/index.js
. Nous allons donc surcharger la configuration par défaut de Backpack afin de lui indiquer que désormais le point d'entrée est le fichier
src/index.ts
et par la même occasion nous allons lui donner la possibilité de comprendre les fichiers Typescript.

Backpack étant basé sur Webpack, on va pouvoir utiliser les loaders existants. Ajoutons le loader Typescript.

yarn add -DE ts-loader

Il ne nous reste plus qu'à créer un fichier de configuration nommé

backpack.config.js
et à y ajouter le nouveau point d'entrée et le loader Typescript.

// backpack.config.js
module.exports = {
  webpack: (config, options, webpack) => {
    // nouveau point d'entrée
    config.entry.main = ["./src/index.ts"];

    // résolution automatique des extensions
    config.resolve = {
      extensions: [".ts", ".js", ".json"],
    };

    // loader Typescript
    config.module.rules.push({
      test: /\.ts$/,
      loader: "ts-loader",
    });

    return config;
  },
};

On lance un

yarn dev
et tout fonctionne !

Et voilà c'est fini. Simple non ?

Merci de m'avoir lu.

Maxime Blanc


© 2023 Maxime Blanc. Tous droits réservés.