如何在 TSLint 中对 js 和 ts 使用相同的规则

Posted

技术标签:

【中文标题】如何在 TSLint 中对 js 和 ts 使用相同的规则【英文标题】:How to use the same rules for js and ts in TSLint 【发布时间】:2018-03-30 08:18:22 【问题描述】:

我想在 .js 文件和 .ts 文件中使用相同的样式。我知道 tslint.json 中有 jsRules 属性,但我发现它有 2 个问题:

复制蚂蚁粘贴规则一模一样 扩展某些配置时,例如tslint-react,你在jsRules中没有得到规则,意味着你必须去规则集的源代码,手动复制。

有没有其他方法可以拥有相同的代码风格而不必同时维护 eslint 和 tslint?

【问题讨论】:

【参考方案1】:

不是每个人都知道这一点,但 TSLint 配置不必放在 .json 文件中。您可以使用.js 扩展,并在其中保留您喜欢的任何逻辑。

在这种情况下,我们可以将 TSLint 规则分为两类——通用规则和特定于 React 的规则。两个规则集都将用于 TypeScript 文件,但只有第一个规则集将应用于 javascript

tslint.js

const UNIVERSAL_RULES = 
  "max-line-length": [true, 120]


const REACT_RULES = 
  "jsx-space-before-trailing-slash": true


module.exports = 
  extends: [
    "tslint:recommended"
  ],
  jsRules: UNIVERSAL_RULES,
  rules: 
    ...UNIVERSAL_RULES,
    ...REACT_RULES
  

运行 TSLint CLI 时,可能需要明确指向您的配置文件。您可以通过将--config tslint.js 添加到您的tslint 命令来做到这一点。

【讨论】:

您也可以将*.js 文件导入到您的根tslint.config 文件中,因为tslint 在后台使用NodeJS 导入解析...所以如果您有dynamiclint.js,它会导入在你的根目录下就好了tsconfig.json: "extends": [ "./dynamiclint" ]

以上是关于如何在 TSLint 中对 js 和 ts 使用相同的规则的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 tslint 获取所有 ts 文件代码行数?

使用 tslint 时如何忽略 *.d.ts 文件?

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

让 TSLint 遵循我在 JS 文件中的规则

如何将 tslint 与 npx 一起使用

需要 gulp-tslint 时出错