ESLint avec le parseur/plugin TypeScript : comment inclure les fichiers .spec.ts, qui sont exclus de tsconfig.json ?
J'utilise l'incroyable typescript-eslint avec ESLint.
Description du problème : le parseur ESLint de TypeScript se plaint que src/module.spec.ts ne fait pas partie du projet, et c'est correct. J'exclus tous les fichiers spec.ts du fichier tsconfig.json de TypeScript parce qu'ils n'ont pas besoin d'être transpilés.
Comment faire en sorte que src/module.spec.ts ne soit pas transpilé mais toujours vérifié avec ESLint ?
my-project\src\module.spec.ts 0:0 erreur Erreur d'analyse : "parserOptions.project" a été défini pour @typescript-eslint/parser. Le fichier ne correspond pas à la configuration de votre projet : src\module.spec.ts. Le fichier doit être inclus dans au moins un des projets fournis
Mon .eslint.json (simplifié) :
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"env": {
"node": true
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"project": "tsconfig.json"
},
"plugins": [
"@typescript-eslint"
]
}
Mon tsconfig.json :
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"declaration": true,
"sourceMap": false,
"outDir": "./dist",
"rootDir": "./src",
"removeComments": true,
"strict": true,
"skipLibCheck": true,
"esModuleInterop": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"./dist",
"**/*.spec.ts"
]
}
Réponse #1
Dans le dossier du projet contenant tsconfig.json, créez un autre fichier JSON avec le contenu suivant :
{
"exclude": [
"./dist"
],
"extends": "./tsconfig.json"
}
Le nom exact du fichier est sans importance ici. Notez qu'il s'agit d'un fichier de configuration TypeScript parfaitement valide où tous les paramètres sont hérités de ./tsconfig.json, sauf pour extends, où le motif "**/*.spec.ts" a été supprimé.
Un outil qui lit ses paramètres à partir de ce nouveau fichier JSON (au lieu du fichier tsconfig.json par défaut) ne ignorera pas src/module.spec.ts.
Ensuite, dans votre .eslint.json sous parserOptions, définissez le nom du nouveau fichier JSON comme project, par exemple si le fichier s'appelle test.tsconfig.json :
"project": "test.tsconfig.json"
Puis exécutez ESLint et voyez de quoi d'autre il se plaint.
C'est essentiellement ce que je fais dans l'un de mes projets après avoir rencontré un problème similaire. Il doit probablement y avoir quelques autres façons d'obtenir le même effet.
