如何对 *.spec.ts 文件使用不同的 tslint.json

Posted

技术标签:

【中文标题】如何对 *.spec.ts 文件使用不同的 tslint.json【英文标题】:How to use different tslint.json for *.spec.ts files 【发布时间】:2018-11-03 11:55:30 【问题描述】:

我为我的 Angular 应用程序定义了一组 tslint 规则。但是,对于规范文件,我想使用更宽松的规则集(例如,禁用 newline-per-chained-call 规则以获得好的期望语句),但我不知道如何在 IntelliJ IDEA 中做到这一点。

Angular CLI 工作正常,因为在 CLI 配置中有一个部分将正确的 tsconfig.json 文件(具有正确的排除/包含)映射到相应的 tslint 文件。但是,IntelliJ 不尊重这一点。

"lint": [
  
    "project": "src/tsconfig.app.json"
  ,
  
    "project": "src/tsconfig.spec.json"
    "tslintConfig": "tslint.spec.json"
  ,
  
    "project": "e2e/tsconfig.e2e.json",
    "tslintConfig": "tslint.spec.json"
  
]

IntelliJ 自 2018.1 版起支持多个 tsconfig.json 文件(请参阅:https://youtrack.jetbrains.com/issue/WEB-28091),尽管它看起来仍然不支持多个 tslint 配置。

我还找到了一个解决方案来创建一个本地范围并禁用一些检查,但我更希望它由 tslint 规则为不使用 IntelliJ 的人定义。

另一种方法是将测试放在单独的目录中并在其中放置一个 tslint.json,但这不是 Angular 推荐的,也不是人们在 Angular 中习惯的。

【问题讨论】:

【参考方案1】:

IDEA 中的 TsLint 服务的工作方式与 TSLint cli 相同 - 它在被 lint 文件的目录中查找名为 tslint.json 的配置文件,如果未找到,则搜索祖先目录。因此,唯一的解决方案是将单独的配置文件放在您的 spec 目录中。 如果您需要该服务在此处遵循 Angular 规则,请随时在 youtrack 中创建功能请求,https://youtrack.jetbrains.com/issues/WEB。如果它获得足够的选票,它将被考虑用于未来的版本

【讨论】:

感谢您的建议,这是我创建的票证:youtrack.jetbrains.com/issue/WEB-33171

以上是关于如何对 *.spec.ts 文件使用不同的 tslint.json的主要内容,如果未能解决你的问题,请参考以下文章

转译时排除 *.spec.ts 文件,但仍能正确 lint

Angular CLI 生成的“spec.ts”文件有啥用?

仅将 TypeScript 环境声明添加到特定文件(如 *.spec.ts)

带有 TypeScript 解析器/插件的 ESLint:如何包含从 tsconfig.json 中排除的 .spec.ts?

*.directive.spec.ts 中的错误 TS2554

Angular-cli 没有运行 spec.ts 文件