Catch-22 с parserOptions и исключить - PullRequest
1 голос
/ 16 марта 2020

Я хочу добавить @typescript-eslint/no-floating-promises к своим правилам ESLint и испытываю трудности.

Это требует parserOptions.

Вот мой .eslintr c. js :

module.exports = {
  root: true,
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 2017,
    project: './tsconfig.json'
  },
  plugins: [
    '@typescript-eslint',
  ],
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/eslint-recommended',
    'plugin:@typescript-eslint/recommended',
    'prettier'
  ],
  rules: {
    '@typescript-eslint/no-floating-promises': ['error'],
    '@typescript-eslint/no-explicit-any': 'off'
  }
};

и мой tsconfig. json:

{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["ES2017"],
    "module": "commonjs",
    "declaration": true,
    "outDir": "lib",
    "removeComments": true,
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["src/**/*.spec.ts"]
}

Подвох exclude. Я не хочу, чтобы мои тесты (спецификации) были скомпилированы в outDir. Но это вызывает следующую ошибку, когда я запускаю ESLint:

error Ошибка синтаксического анализа: «parserOptions.project» был установлен для @ typescript-eslint / parser. Файл не соответствует конфигурации вашего проекта: src / index.spe c .ts. Файл должен быть включен как минимум в один из предоставленных проектов

(Сценарий "lint": "eslint \"src/**/*.ts\"")

I do хочу задержать мои тесты.

Все работало нормально, пока я не добавил parserOptions - и мне нужно это для правила no-floating-promises.

В FAQ по машинописному тексту написано:

Чтобы это исправить, просто убедитесь, что опция include в вашем tsconfig включает в себя каждый файл, который вы хотите скопировать.

Суть в том, что я создаю библиотеку, и я не Я не хочу публиковать sh тестовые файлы.

Как я могу собрать только файлы, которые я хочу опубликовать sh, в один каталог, в то же время помечая все файлы? (Я бы хотел сделать сборку максимально простой.)

1 Ответ

1 голос
/ 16 марта 2020

Я использую два tsconfig.json s в своих проектах.

tsconfig. json

{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["ES2017"],
    "module": "commonjs",
    "declaration": true,
    "outDir": "lib",
    "removeComments": true,
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"]
}

tsconfig.build. json

{
    "extends": "./tsconfig.json",
    "exclude": ["src/**/*.spec.ts"]
}

Чтобы построить проект, запустите tsc -p tsconfig.build.json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...