Ajoute ESLint : base partagée + couche Angular de @avalon-vanguard/config
- eslint.config.js reprend l'exemple du README du paquet (préfixe app, comme dans
angular.json), plus les sorties ignorées par .gitignore (out-tsc, rapports
Playwright, cache de l'ETL…) : ESLint ne lit pas .gitignore, et un
playwright-report/index.html local serait sinon lu comme un template Angular.
- devDependencies aux mêmes plages que web-site (main) : eslint ^10.10.0,
@eslint/js ^10.0.1, typescript-eslint ^8.70.0, angular-eslint ^22.5.0. Le paquet
partagé les déclare en pairs optionnels : chaque dépôt qui l'importe les garde.
- Script "lint" : eslint .
`npm run lint` signale 37 erreurs existantes (14 prefer-inject, 18 no-unused-vars,
4 no-useless-assignment, 1 no-unused-expressions), corrigées dans les commits
suivants.
package-lock.json : angular-eslint tire @angular-devkit/core 22.2, qui épingle
picomatch 4.0.7 ; npm remonte donc picomatch 4.0.4 → 4.0.7 (et retire la copie
4.0.5 de vite), @jridgewell/sourcemap-codec 1.5.5 → 1.6.0, et remonte ora.
Vérifié depuis un `npm ci` propre contre main 822c699 : les 33 fichiers du
`ng build` de production ont le même sha256, et prettier --check, les 5 typechecks,
`ng test` (729 tests verts) et `playwright test --list` (17 tests) sont identiques.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
// @ts-check
|
||||
const { defineConfig } = require('eslint/config');
|
||||
const avalonBase = require('@avalon-vanguard/config/eslint');
|
||||
const avalonAngular = require('@avalon-vanguard/config/eslint/angular');
|
||||
|
||||
module.exports = defineConfig([
|
||||
{
|
||||
// Build, test and Playwright output (see .gitignore): ESLint does not read .gitignore.
|
||||
ignores: [
|
||||
'dist/**',
|
||||
'coverage/**',
|
||||
'.angular/**',
|
||||
'node_modules/**',
|
||||
'out-tsc/**',
|
||||
'tools/etl/.cache/**',
|
||||
'e2e/test-output/**',
|
||||
'test-results/**',
|
||||
'playwright-report/**',
|
||||
'blob-report/**',
|
||||
],
|
||||
},
|
||||
{
|
||||
files: ['**/*.ts'],
|
||||
extends: [avalonBase, avalonAngular.typescript],
|
||||
rules: {
|
||||
'@angular-eslint/directive-selector': [
|
||||
'error',
|
||||
{ type: 'attribute', prefix: 'app', style: 'camelCase' },
|
||||
],
|
||||
'@angular-eslint/component-selector': [
|
||||
'error',
|
||||
{ type: 'element', prefix: 'app', style: 'kebab-case' },
|
||||
],
|
||||
},
|
||||
},
|
||||
avalonAngular.templates,
|
||||
]);
|
||||
Reference in New Issue
Block a user