javascript - Parsningsfel: hittades inte av projektservicen, men jag har ignorerat dessa filer
Min projektstruktur
dist (kompilerad kod av ts)
bibliotek
- lib.d.ts
- lib
- lib.d.ts
- lib.js
src (källkod)
bibliotek
- lib.ts
Min tsconfig.json
{
"compilerOptions": {
"target": "ES2022",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": "./src",
"declaration": true,
"allowJs": true
},
"include": [
"src/**/*.ts",
],
"exclude": [
"eslint.config.mjs",
"dist/**"
]
}
Min eslint.config.mjs:
// @ts-check
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import tsParser from '@typescript-eslint/parser'
import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
const __dirname = dirname(fileURLToPath(import.meta.url));
export default tseslint.config(
{
files: [
"src/**/*.ts"
],
ignores: [
'dist/**/*.ts',
'dist/**',
"**/*.mjs",
"eslint.config.mjs",
"**/*.js"
],
rules: {
"@typescript-eslint/no-unnecessary-condition": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
},
},
...tseslint.configs.strictTypeChecked,
...tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
project: "./tsconfig.json",
projectService: true,
tsconfigRootDir: __dirname,
projectFolderIgnoreList: [
"**dist**",
],
},
},
},
);
Jag vill att tsc ska lägga de kompilerade utdatafilerna i dist-mappen (jag är ny på TypeScript så jag vet inte om detta är rätt sätt för ett TS-projekt).
Jag har ignorerat filer under dist-mappen men jag fick fortfarande dessa fel:
/Users/kainzhong/VSCode/eslintTmp/dist/src/index.d.ts
0:0 error Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/index.d.ts was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject
/Users/kainzhong/VSCode/eslintTmp/dist/src/index.js
0:0 error Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/index.js was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject
/Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.d.ts
0:0 error Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.d.ts was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject
/Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.js
0:0 error Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.js was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject
/Users/kainzhong/VSCode/eslintTmp/eslint.config.mjs
0:0 error Parsing error: /Users/kainzhong/VSCode/eslintTmp/eslint.config.mjs was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject
Har jag inte redan ignorerat dessa filer? Varför klagar eslint fortfarande på dem?
Svar #1
Denna konfiguration ignorerar faktiskt inte de filerna - det är problemet. ignores har två sätt att bete sig på:
- När du är i en konfigurationsblock med
filesstoppar det det specifika konfigurationsblocket från att påverka de filer som ignoreras - När de är i sin egen konfigurationsblock utan
filesså berättar det för ESLint att ignorera dessa filer
Flytta ignores till sin egen block i början:
export default tseslint.config(
{
ignores: [
'dist/**/*.ts',
'dist/**',
"**/*.mjs",
"eslint.config.mjs",
"**/*.js"
],
},
{
files: [
"src/**/*.ts"
],
// ...
Från https://eslint.org/docs/latest/use/configure/configuration-files#excluding-files-with-ignores.
