Пользовательское правило TSLint в TypeScript с Angular 7 и `ng lint` - PullRequest
0 голосов
/ 08 марта 2019

У меня есть новое рабочее пространство для библиотеки, которую я поддерживаю. У нас есть 2 пользовательских правила TSLint, которые мы использовали в Angular 5, которые не использовали Angular CLI. Сейчас мы переходим к Angular CLI и Angular 7.

Одна вещь, над которой мы работали, заключалась в том, что нам не нужно было компилировать эти правила TSLint для JS, прежде чем TSLint их подберет. Однако для использования в нашем скрипте lint package.json требуется ts-node.

Как я могу сказать ng забрать эти файлы правил TypeScript TSLint?

tsconfig.json (in projects/my-lib/src)

{
  "rulesDirectory": "./lib/tslint-rules"
}

Затем в нашем основном рабочем пространстве мы расширяем этот tsconfig из библиотеки и добавляем наше пользовательское правило.

Could not find implementations for the following rules specified in the configuration:
    my-custom-tslint-rule
Try upgrading TSLint and/or ensuring that you have all necessary custom rules installed.
If TSLint was recently upgraded, you may have old rules configured which need to be cleaned up.

1 Ответ

0 голосов
/ 12 марта 2019

Хорошо, я понял это. Есть несколько вещей, которые вам нужно сделать, если вы хотите включить пользовательские правила TSLint в вашу библиотеку Angular.

  1. Убедитесь, что они экспортируются в ваш public_api.ts. Это гарантирует, что при запуске ng build <library-name> компилятор TypeScript подберет эти файлы, скомпилирует их и поместит в папку dist.

  2. Настройте tsconfig.lib.json для использования модулей не-es6 / es2015. Это то, что вызывало у меня много проблем. Похоже, что TSLint не поддерживает модули стиля es2015. Я переключил его на использование umd. (Я также отметил, что commonjs тоже хорошо работал.)

{
  "compilerOptions": {
    ...
    "module": "umd",
  }
}
  1. В любом проекте, где установлена ​​эта библиотека, вы можете подобрать свои правила, выполнив следующие действия. Отредактируйте ваш tslint.json и добавьте установленные tslint-правила node_modules в ваш tslint.json. Затем добавьте ваши конкретные правила в список правил.
  "rulesDirectory": [
    // ...,
    "node_modules/<my-package>/esm2015/lib/tslint-rules"
  ],

Затем добавьте настроенное правило следующим образом:

  "rules": {
    // ...,
    "my-custom-rule": true,
    // ...
  }
  1. Кроме того, вы также можете настроить tslint-default.json в своей библиотеке и скопировать его в папку dist после запуска ng build. Это должно добавить каталог правил и настройки по умолчанию для ваших пользовательских правил.

Затем, когда вы устанавливаете этот пакет в другом месте, вам нужно только расширить этот tslint-default.json из установленной папки node_modules.

Надеюсь, это поможет любому, кто пытается создать библиотеку Angular и включает в себя пользовательские правила TSLint.

...