typescript - Exkludera *.spec.ts-filer vid transpilering men linta dem fortfarande på rätt sätt
Hur kan jag exkludera TypeScript-filer från att transpilera men ändå säkerställa att de fungerar korrekt med linter i Atom-redigeraren?
Jag får detta fel i mina *.spec.ts-filer:
En asynkron funktion eller metod i ES5/ES3 kräver 'Promise'-konstruktorn. Se till att du har en deklaration för 'Promise'-konstruktorn eller inkludera 'ES2015' i ditt
--lib-alternativ.
Problemet uppstår eftersom jag uttryckligen exkluderar katalogen med alla mina testfiler (se tsconfig-filen nedan), eftersom jag inte vill att dessa filer ska transpileras till JavaScript när jag bygger projektet. Jag vill dock att dessa filer ska lints korrekt av tslint-pluginen medan jag tittar på dem i Atom-redigeraren.
Min setup:
Atom.io 1.30 med plugins:
- atom-typescript 12.6.3
- språk-typescript 0.4.0
- linter-tslint 1.9.1
Min tsconfig.json-fil:
{
"compileOnSave": false,
"compilerOptions": {
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"baseUrl": ".",
"declaration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"inlineSourceMap": true,
"inlineSources": true,
"lib": [
"es2017",
"dom"
],
"moduleResolution": "node",
"newLine": "lf",
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist",
"target": "es5",
"typeRoots": [
"node_modules/@types"
]
},
"exclude": [
"./spec",
"./dist"
]
}
Svar #1
Du kommer att behöva använda två tsconfig.json-filer, en för editorn (som inkluderar *.spec.ts-filerna) och en annan för kompilering (som exkluderar dem). Du kan använda extends för att dela de flesta av inställningarna mellan de två filerna. Se denna diskussion.