Исключать файлы *.spec.ts при транспиляции, но по-прежнему корректно анализировать их.

Как я могу исключить файлы машинописного текста из транспиляции, но при этом убедиться, что они правильно работают с линтером в редакторе Atom?

Я получаю эту ошибку в моих *.spec.ts файлах:

Для асинхронной функции или метода в ES5/ES3 требуется конструктор Promise. Убедитесь, что у вас есть объявление для конструктора «Promise», или включите «ES2015» в параметр --lib.

Проблема возникает из-за того, что я явно исключаю каталог со всеми моими тестовыми файлами (см. файл tsconfig ниже), потому что я не хочу, чтобы эти файлы переносились в JavaScript при сборке проекта. Однако я хочу, чтобы плагин tslint правильно анализировал эти файлы, когда я просматриваю их в редакторе Atom.

Моя установка:

  • Atom.io 1.30 with plugins:
    • atom-typescript 12.6.3
    • язык-машинопись 0.4.0
    • линтер-tslint 1.9.1
  • цлинт 5.9.1
  • машинопись 3.0.1

Мой tsconfig.json файл:

{
  "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"
  ]
}

person RobotNerd    schedule 14.09.2018    source источник


Ответы (1)


Вам нужно будет использовать два файла tsconfig.json, один для редактора (который включает файлы *.spec.ts) и другой для компиляции (который исключает их). Вы можете использовать extends, чтобы разделить большинство опций между двумя файлами. См. это обсуждение.

person Matt McCutchen    schedule 15.09.2018
comment
Это сработало для меня. Мне удалось добавить второй файл tsconfig.json в каталог spec/. Редактор Atom автоматически нашел этот файл и использовал его для переопределения основного файла tsconfig из родительского каталога. - person RobotNerd; 25.09.2018