现已发布!阅读关于 11 月的新功能和修复。

从 TSLint 迁移到 ESLint

TSLint 过去是推荐的 linter,但现在 TSLint 已被弃用,ESLint 正在接替它的职责。本文将帮助你从 TSLint 迁移到 ESLint。

ESLint:安装

你需要安装 ESLint。ESLint 本身不支持 TypeScript,因此你还需要安装 eslint-typescript-support

npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

或者如果你使用 yarn 作为你的包管理器

yarn add eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin --dev

上面的命令添加了 ESLint,添加了一个使 ESLint 理解 TypeScript 的解析器,并添加了一些特定于 TypeScript 的规则。

现在,为了使实际的迁移更简单,运行 tslint-to-eslint-config 实用程序。此工具将采用你的 TSLint 配置,并从中创建“最接近”的 ESLint 配置。

npx tslint-to-eslint-config

此命令 下载并执行该实用程序以执行迁移。有关其他选项,请查看该实用程序的使用指南

现在应该有一个新的 .eslintrc.js 文件、一个日志文件 (tslint-to-eslint-config.log) 以及其他文件的可能更改,例如 .vscode/settings.json。仔细检查这些更改,特别是对现有文件的更改,并检查日志文件。

ESLint:配置

.eslintrc.js 文件通常足以开始使用,但 parserOptions.project 属性很可能仍设置为你的 tsconfig.json 文件。这意味着 ESLint 规则可以使用语义信息,例如,此变量是字符串还是数字数组?此配置启用了一些强大的规则,但也意味着 ESLint 需要更长的时间来计算。扩展的默认规则不需要语义信息,除非你已添加需要语义信息的规则,否则我们建议你删除 parserOptions.project 属性。

ESLint:运行

你现在可以运行 ESLint 了,但在执行此操作之前,我们建议你禁用 TSLint。为此,请打开“扩展”视图,然后在 TSLint 扩展的上下文菜单中选择“禁用”。

是时候进行 lint 了!使用此命令:eslint -c .eslintrc.js --ext .ts <mySrcFolder>(注意 --ext .ts 选项,它告诉 ESLint 查看 TypeScript 文件)。我们建议将该命令放在你的 package.json 文件的 scripts 部分中,如下所示

"lint": "eslint -c .eslintrc.js --ext .ts <mySrcFolder>"

要将 ESLint 与 Visual Studio Code 集成,请执行以下操作

  • 安装 ESLint 扩展。
  • 通过 任务: 配置任务 命令创建一个任务,然后选择 npm: lint
  • 在生成的 tasks.json 文件中,将问题匹配器配置为 $eslint-stylish

提示:ESLint 有时在执行操作的方式上“更正确”,你可能会看到以前没有的警告,例如指出缺少分号。尝试使用 --fix 选项让 ESLint 为你清理。

TSLint:移除

恭喜。你现在应该有一个可用的 ESLint 设置,是时候进行清理了。

TSLint 的移除取决于你的项目,但通常这些是步骤

  • 更新 .vscode/extensions.json 以推荐 ESLint 扩展,而不是 TSLint

    "recommendations": [
      "dbaeumer.vscode-eslint"
    ]
    
  • 删除 tslint.json 文件。

  • package.json 文件中删除对 tslint 的依赖。

  • 使用 npm uninstall tslint 卸载 TSLint。