Un projet backend Typescript from scratch

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.

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.
Poursuivre la lecture


