- Publié le
Accélérer ESLint dans les projets Next.js avec Flat Config et GitLab CI
- Auteurs
Accélérer ESLint dans les projets Next.js avec Flat Config et GitLab CI
Cet article se concentre sur GitLab et montre comment rendre ESLint rapide et prévisible dans un projet Next.js et TypeScript avec le format moderne flat config.
Nous allons :
- Utiliser des exclusions globales pour éviter les dossiers volumineux ou générés.
- Conserver une tâche GitLab CI simple qui exécute
npm run lint.
Pourquoi Flat Config ?
Le système flat config est le format de configuration de nouvelle génération d’ESLint. Il remplace .eslintrc et vise davantage de rapidité, de clarté et de prévisibilité.
Il :
- Fonctionne nativement avec les modules ES.
- Simplifie les exclusions globales et les motifs ciblant des fichiers.
- S’intègre facilement à Next.js,
next lintle prenant en charge nativement.
Exclusions globales avec ignores au premier niveau
Définissez un bloc ignores au premier niveau afin qu’ESLint ne traite jamais les répertoires volumineux ou générés :
// eslint.config.mjs (flat config)
/** @type {import("eslint").Linter.Config[]} */
export default [
js.configs.recommended,
{
// ESLint already ignores ["**/node_modules/", ".git/"] by default, reference: https://eslint.org/docs/latest/use/configure/configuration-files#globally-ignoring-files-with-ignores
// so you do NOT need to list them here.
// The folders below are project-specific outputs we also want to ignore globally.
ignores: ['.next/**', 'out/**', 'dist/**', 'build/**', 'coverage/**'],
},
{ ... }, // ... other configuration object, inherit global ignores
]
À quoi correspondent ces dossiers et pourquoi les ignorer ?
- « node_modules/ » → Dépendances, ignorées par défaut par ESLint.
- « .git/ » → Métadonnées de contrôle de version, ignorées par défaut par ESLint.
- « .next/ » → Résultat généré de la construction Next.js, côté serveur et client.
- « out/ » → Résultat généré de l’export statique.
- « dist/ », « build/ » → Résultats générés de compilation ou d’assemblage.
- « coverage/ » → Rapports générés de couverture des tests.
En les excluant, ESLint évite de parcourir des fichiers sans intérêt pour l’analyse, ce qui accélère le linting.
Scripts de package.json
Gardez des scripts simples et adaptés à la CI :
{
"scripts": {
"lint": "next lint"
}
}
next lintintègre automatiquement ESLint avec des réglages Next.js pertinents et respecte votre flat config.
GitLab CI : simple et rapide
Voici une configuration GitLab CI minimale qui installe les dépendances et exécute ESLint :
# .gitlab-ci.yml
stages:
- lint
lint:
stage: lint
image: node:20-alpine
script:
- npm ci
- npm run lint
Remarques
npm cigarantit des installations reproductibles à partir de votre fichier de verrouillage.- La tâche de linting reste légère et s’appuie entièrement sur votre configuration ESLint au format flat config pour gagner en rapidité. Vous disposez ainsi d’une configuration ESLint claire, rapide et maintenable pour votre projet Next.js dans GitLab CI.