Aller au contenu principal

Étape 08

Prérequis​

git checkout --force step-08
pnpm i

Description​

L'équipe Booklist a bien bossé et a crée un super composant de liste (scroll infini, virtualisation, 120+ fps, animation d'entrée/sortie, la totale !).
Mais maintenant la compilation avec babel montre ses limites et prend beaucoup de temps.

Exercice​

Utiliser un autre compilateur (esbuild, swc) sur le module Booklist.​

Pour esbuild​

  1. Ajoutez les dépendances nécessaires.
apps/booklist/package.json
   "devDependencies": {
"@types/react": "18.0.21",
"@types/react-dom": "^18.0.6",
+ "esbuild-loader": "^2.20.0",
"eslint": "8.25.0",
"tsconfig": "workspace:*",
"typescript": "^4.8.4",
  1. Remplacer le loader babel par le loader esbuild.
apps/booklist/webpack.config.js
   devServer: {
port: 3001,
},
+ module: {
+ rules: [
+ {
+ test: /\.[jt]sx?$/,
+ exclude: /node_modules/,
+ use: {
+ loader: 'esbuild-loader',
+ options: {
+ loader: 'tsx',
+ target: 'esnext',
+ },
+ },
+ },
+ ],
+ },
plugins: [

Pour swc​

  1. Ajoutez les dépendances nécessaires.
apps/booklist/package.json
   "devDependencies": {
+ "@swc/core": "^1.3.4",
"@types/react": "18.0.21",
"@types/react-dom": "^18.0.6",
"eslint": "8.25.0",
+ "swc-loader": "^0.2.3",
"tsconfig": "workspace:*",
  1. Remplacer le loader babel par le loader swc.
apps/booklist/webpack.config.js
   devServer: {
port: 3001,
},
+ module: {
+ rules: [
+ {
+ test: /\.[jt]sx?$/,
+ exclude: /node_modules/,
+ use: {
+ loader: 'swc-loader',
+ },
+ },
+ ],
+ },
plugins: [

Vérifier que le nouveau compilateur fonctionne​

pnpm i
pnpm serve

Bonus​

Utiliser un autre compilateur sur le module Book.​

Solution​

Pour accéder à la solution :

git checkout --force step-08-result

Pour voir les changements :

git diff step-08..step-08-result

ou sur Github.