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
  • tslint 5.9.1
  • typescript 3.0.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.

Relaterade artiklar