Un projet backend Typescript from scratch

Un projet backend Typescript from scratch
Alexandre P. dans Dev - mis à jour le 11-03-2024

Pour monter un projet backend Typescript en moins d'une minute, from scratch, sans partir d'un boilerplate, rien de plus simple...

Pourquoi ne pas partir d'un Boilerplate ?

J'évite toujours de partir d'un Boilerplate public pour plusieurs raisons :

  • Je veux éviter d'avoir trop de dépendances pour simplifier la maintenance et la montée de version.
  • Je veux maîtriser ce qui est installé dans mon projet pour éviter tout problème de hack ou problème de droit.
  • A part les gros projets, les boilerplates sont souvent déjà obsolètes

Certains boilerplate sont pratiques

Il y a tout de même certains boilerplate qui sont utiles :

  • Create React App
  • Next.js

Et il m'arrive même d'en faire pour moi même, mais pour un projet backend Typescript, on peut partir from scratch

Un projet Typescript avec Jest et SWC

Il ne faut pas grand chose pour mettre cela en place :

mkdir new_project
cd new_project

yarn init

# Install Typescript

yarn add -D typescript @types/node ts-node
npx tsc --init

# Cela va générer un fichier tsconfig.js
# En général je configure les rootDir et outDir

# Install Jest

yarn add -D jest @swc/core @swc/jest @types/jest 
npx jest --init

# Cela va générer un fichier jest.config.js 

Dans le fichier jest.config.js

module.exports = {
    // ...
    transform: {
        "^.+\\.(t|j)sx?$": ["@swc/jest"],
    },
};

Vous pouvez maintenant créer votre fichier src/index.ts

Pour exécuter le code :

npx ts-node src/index.ts

Pour exécuter les tests :

npx jest 

FAQ

Pourquoi utiliser SWC plutôt que ts-jest pour les tests ?

SWC est un compilateur écrit en Rust, beaucoup plus rapide que les solutions basées sur le compilateur TypeScript natif. Pour les tests avec Jest, cela réduit significativement le temps d'exécution, surtout sur les projets qui grossissent.

Est-ce que cette configuration fonctionne aussi pour une API Express ou Fastify ?

Oui, cette base est volontairement minimale et agnostique. Tu peux ensuite ajouter le framework HTTP de ton choix avec yarn add sans que la configuration TypeScript ou Jest ne soit impactée.

Que faut-il configurer dans tsconfig.json après l'avoir généré ?

Le minimum conseillé est de définir rootDir pour pointer vers ton dossier source, et outDir pour indiquer où seront compilés les fichiers JavaScript. Cela évite que les fichiers compilés ne se mélangent au code source.

Peut-on utiliser npm à la place de yarn pour ces commandes ?

Oui, il suffit de remplacer yarn add -D par npm install --save-dev et yarn init par npm init. Le reste de la configuration reste identique.

Comment lancer le projet en production une fois le code compilé ?

Tu compiles d'abord avec npx tsc, ce qui génère les fichiers JavaScript dans le dossier outDir, puis tu exécutes le fichier de sortie avec node. En développement, ts-node permet de s'affranchir de cette étape de compilation.

#backend#typescript#node#jest#swc

user picture

Alexandre P.

Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.