Config partagée : ESLint et tsconfig depuis @avalon-vanguard/config

eslint.config.mjs prend @avalon-vanguard/config/eslint, qui contient les deux
mêmes entrées qu'avant (@eslint/js recommended + typescript-eslint recommended) ;
les règles, globals et ignores propres à cereale restent ici. tsconfig.json
étend tsconfig/library.json, qui porte les huit options retirées. « strict »
reste explicite.

Pas de .editorconfig : sans config Prettier dans le dépôt, Prettier le lirait
et changerait le formatage.

.npmrc : le scope @avalon-vanguard se lit sur le registre npm de Gitea, en
lecture anonyme, sans jeton.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-01 17:03:23 +02:00
co-authored by Claude Opus 5.5
parent 5f2e310f61
commit 68d5d46ec0
5 changed files with 42 additions and 13 deletions
+1
View File
@@ -0,0 +1 @@
@avalon-vanguard:registry=https://git.avalonvanguard.com/api/packages/avalon-vanguard/npm/
+3 -3
View File
@@ -1,4 +1,4 @@
import eslint from '@eslint/js'; import avalonBase from '@avalon-vanguard/config/eslint';
import tseslint from 'typescript-eslint'; import tseslint from 'typescript-eslint';
import globals from 'globals'; import globals from 'globals';
@@ -6,8 +6,8 @@ export default tseslint.config(
{ {
ignores: ['dist/**', 'node_modules/**', 'coverage/**', 'docs/**'], ignores: ['dist/**', 'node_modules/**', 'coverage/**', 'docs/**'],
}, },
eslint.configs.recommended, // @eslint/js recommended + typescript-eslint recommended, shared across avalon-vanguard
...tseslint.configs.recommended, avalonBase,
{ {
languageOptions: { languageOptions: {
globals: { globals: {
+33
View File
@@ -9,6 +9,7 @@
"version": "0.4.1", "version": "0.4.1",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@avalon-vanguard/config": "^1.0.0",
"@babel/standalone": "^8.0.4", "@babel/standalone": "^8.0.4",
"@eslint/js": "^10.0.1", "@eslint/js": "^10.0.1",
"@swc/core": "^1.15.47", "@swc/core": "^1.15.47",
@@ -26,6 +27,38 @@
"node": ">=20.0.0" "node": ">=20.0.0"
} }
}, },
"node_modules/@avalon-vanguard/config": {
"version": "1.0.0",
"resolved": "https://git.avalonvanguard.com/api/packages/avalon-vanguard/npm/%40avalon-vanguard%2Fconfig/-/1.0.0/config-1.0.0.tgz",
"integrity": "sha512-ySojd0OONRb9N9KT4CJeyLf5GUrfRP8jxfPTMRv3HUk7gld4VuzZd16lW774SfLkMBMOUYVVf9SKBMO+JATTTA==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"@eslint/js": "^10.0.0",
"angular-eslint": "^22.0.0",
"eslint": "^10.0.0",
"prettier": "^3.0.0",
"typescript": "^6.0.0",
"typescript-eslint": "^8.0.0"
},
"peerDependenciesMeta": {
"@eslint/js": {
"optional": true
},
"angular-eslint": {
"optional": true
},
"eslint": {
"optional": true
},
"prettier": {
"optional": true
},
"typescript-eslint": {
"optional": true
}
}
},
"node_modules/@babel/helper-string-parser": { "node_modules/@babel/helper-string-parser": {
"version": "7.29.7", "version": "7.29.7",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+1
View File
@@ -79,6 +79,7 @@
}, },
"homepage": "https://avalon-vanguard.github.io/cereale/", "homepage": "https://avalon-vanguard.github.io/cereale/",
"devDependencies": { "devDependencies": {
"@avalon-vanguard/config": "^1.0.0",
"@babel/standalone": "^8.0.4", "@babel/standalone": "^8.0.4",
"@eslint/js": "^10.0.1", "@eslint/js": "^10.0.1",
"@swc/core": "^1.15.47", "@swc/core": "^1.15.47",
+4 -10
View File
@@ -1,5 +1,9 @@
{ {
// Visit https://aka.ms/tsconfig to read more about this file // Visit https://aka.ms/tsconfig to read more about this file
// Shared (@avalon-vanguard/config/tsconfig/library.json): sourceMap, declaration,
// declarationMap, noImplicitReturns, noImplicitOverride, noFallthroughCasesInSwitch,
// isolatedModules, skipLibCheck.
"extends": "@avalon-vanguard/config/tsconfig/library.json",
"compilerOptions": { "compilerOptions": {
// File Layout // File Layout
"rootDir": "src", "rootDir": "src",
@@ -11,27 +15,17 @@
"lib": ["ESNext", "ESNext.Decorators"], "lib": ["ESNext", "ESNext.Decorators"],
"types": ["node"], "types": ["node"],
// Other Outputs
"sourceMap": true,
"declaration": true,
"declarationMap": true,
// Stricter Typechecking Options // Stricter Typechecking Options
"noUncheckedIndexedAccess": true, "noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true, "exactOptionalPropertyTypes": true,
// Style Options // Style Options
"noImplicitReturns": true,
"noImplicitOverride": true,
"noUnusedLocals": true, "noUnusedLocals": true,
"noUnusedParameters": true, "noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
// Recommended Options // Recommended Options
"strict": true, "strict": true,
"strictPropertyInitialization": false, "strictPropertyInitialization": false,
"isolatedModules": true,
"skipLibCheck": true,
// NOTE: no `experimentalDecorators`. v2 uses TC39 standard decorators, which is what // NOTE: no `experimentalDecorators`. v2 uses TC39 standard decorators, which is what
// gives ClassFieldDecoratorContext<This, Value> and therefore compile-time checking of // gives ClassFieldDecoratorContext<This, Value> and therefore compile-time checking of