- Pubblicato il
Velocizzare ESLint nei progetti Next.js con Flat Config e GitLab CI
- Autori
Velocizzare ESLint nei progetti Next.js con Flat Config e GitLab CI
Questo articolo si concentra su GitLab e mostra come rendere ESLint rapido e prevedibile in un progetto Next.js + TypeScript usando il moderno formato flat config.
Vedremo come:
- Usare esclusioni globali per saltare cartelle pesanti o generate.
- Mantenere un job GitLab CI semplice che esegue
npm run lint.
Perché Flat Config?
Il sistema flat config è il formato di configurazione di nuova generazione di ESLint. Sostituisce .eslintrc ed è progettato per essere più veloce, pulito e prevedibile.
Questo sistema:
- Funziona nativamente con i moduli ES.
- Semplifica molto le esclusioni globali e i pattern mirati per i file.
- Si integra facilmente con Next.js (
next lintlo supporta direttamente).
Esclusioni globali (ignores al livello principale)
Definisci un blocco ignores al livello principale affinché ESLint non prenda mai in considerazione directory pesanti o generate:
// 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
]
Cosa sono queste cartelle e perché ignorarle
- "node_modules/" → dipendenze (ignorate per impostazione predefinita da ESLint).
- ".git/" → metadati del controllo di versione (ignorati per impostazione predefinita da ESLint).
- ".next/" → output della compilazione Next.js (server/client), generato.
- "out/" → output dell’esportazione statica, generato.
- "dist/", "build/" → output compilato o raggruppato in bundle, generato.
- "coverage/" → rapporti di copertura dei test, generati.
Escludendole, ESLint evita di attraversare file irrilevanti, rendendo le esecuzioni del linting più rapide.
Script di package.json
Mantieni gli script semplici e adatti alla CI:
{
"scripts": {
"lint": "next lint"
}
}
next lintintegra automaticamente ESLint con impostazioni predefinite sensate per Next.js e rispetta la tua flat config.
GitLab CI: semplice e veloce
Ecco una configurazione minima di GitLab CI che installa le dipendenze ed esegue ESLint:
# .gitlab-ci.yml
stages:
- lint
lint:
stage: lint
image: node:20-alpine
script:
- npm ci
- npm run lint
Note
npm cigarantisce installazioni riproducibili (basate sul tuo lockfile).- Il job di linting rimane leggero e si affida interamente alla flat config di ESLint per la velocità. È tutto, una configurazione ESLint pulita, veloce e manutenibile per il tuo progetto Next.js su GitLab CI.