如何使用VisualStudioCode和ESLint在保存时启用Linting

来自菜鸟教程
跳转至:导航、​搜索

介绍

样式指南允许我们编写一致、可重用和干净的代码。 这些规则可以通过 linter 自动执行和执行。 这将使您免于手动检查缩进或使用单引号或双引号。

Visual Studio 代码可以支持每次保存时进行 linting。 您的工作流程可能会受益于执行频繁的 lint 检查以随着时间的推移解决小问题,而不是解决可能延迟部署代码的许多大问题。

在本教程中,您将在 Visual Studio Code 中安装 ESLint、构建规则并启用 codeActionsOnSave

先决条件

如果您想继续阅读本文,您将需要:

  • 下载并安装最新版本的 Visual Studio Code
  • Node.js 安装在本地,您可以按照【X57X】如何安装Node.js 并创建本地开发环境【X126X】进行。

本教程已使用 Node v16.6.2、npm v7.21.0、eslint v7.32.0 和 Visual Studio Code v1.59.1 进行了验证。

第 1 步 - 设置项目

对于不同的语言和项目类型,有各种 linter。 为了满足本教程的需要,您需要安装和配置 ESLint

首先,新建一个项目目录:

mkdir eslint-save-example

然后,导航到项目目录:

cd eslint-save-example

初始化一个新项目:

npm init -y

并安装 eslint

npm install eslint@7.32.0

然后,初始化 eslint

npx eslint --init

使用以下选项回答提示:

? How would you like to use ESLint? To check syntax and find problems
? What type of modules does your project use? JavaScript modules (import/export)
? Which framework does your project use? None of these
? Does your project use TypeScript? No
? Where does your code run? Browser, Node
? What format do you want your config file to be in? JavaScript

此时,您将拥有一个包含 package.json.eslintrc.js 文件的新项目。

为了在 Visual Studio Code 中使用 ESLint,您应该安装 Visual Studio Code 的市场 中提供的 ESLint 扩展。

第 2 步 – 创建有错误的示例

接下来,创建一个有意破坏常见规则的 JavaScript 文件,例如不一致的间距和缩进、引号和分号:

index.js

const helloYou    = (name)=> {
  name = 'you' || name   ;
  console.log("hello" + name + "!" )
}

在 Visual Studio Code 中打开文件并观察违反 ESLint 规则的指示:

helloYou 有下划线。 将鼠标悬停在 Visual Studio Code 中的这一行上会显示以下工具提示消息:'helloYou' is assigned a value but never used。 这是因为 eslint:recommended 启用了规则 .eslint(no-unused-vars)

我们可以通过使用变量来解决这个问题:

index.js

const helloYou    = (name)=> {
  name = 'you' || name   ;
  console.log("hello" + name + "!" )
}

console.log(helloYou)

为了解决其他问题,我们将不得不添加规则。

第 3 步 - 添加规则

eslint --init 创建了一个名为 eslintrc.js 的文件(或 .yml.json 如果您选择了该选项):

.eslintrc.js

module.exports = {
  'env': {
    'browser': true,
    'es2021': true,
    'node': true
  },
  'extends': 'eslint:recommended',
  'parserOptions': {
    'ecmaVersion': 12,
    'sourceType': 'module'
  },
  'rules': {
  }
};

让我们为一致的间距和缩进添加规则。 并强制单引号优先于双引号。 并且还在行尾强制使用分号。

.eslintrc.js

module.exports = {
  // ...
  'rules': {
    'quotes': ['error', 'single'],
    // we want to force semicolons
    'semi': ['error', 'always'],
    // we use 2 spaces to indent our code
    'indent': ['error', 2],
    // we want to avoid extraneous spaces
    'no-multi-spaces': ['error']
  }
};

将更改保存到您的文件。

在您的代码编辑器中,打开您之前创建的 JavaScript 文件。 所有违反的规则都会被显示出来。

如果你安装了 ESLint 扩展,你可以使用 CTRL+SHIFT+P 打开命令面板。 然后搜索 ESLint: Fix all auto-fixable Problems 并按 ENTER(或 RETURN)。

自动修复的问题将得到纠正:

index.js

const helloYou = (name)=> {
  name = 'you' || name ;
  console.log('hello' + name + '!' );
};

console.log(helloYou());

您无需计算缩进和检查引号和分号!

第 4 步 – 在保存时添加代码操作

尝试手动运行 ESLint: Fix all auto-fixable Problems 定期不是很可靠。 但是,每次保存工作时运行 lint 规则会更可靠。 您可以将 ESLint 设置为每次按 CTRL+S(或 COMMAND+S)时运行自动修复。

要使 ESLint 在相同的文件上正常工作,您必须更改 Visual Studio Code 首选项。 转到 文件 > 首选项 > 设置 (或 代码 > 首选项 > 设置 )。

对于本教程,我们将修改 工作区设置 - 也可以将这些设置应用于所有项目。 单击 Workspace 并搜索 Code Actions On Save

Editor: Code Actions On Save
Code action kinds to be run on save.

Edit in settings.json

然后单击settings.json

.vscode/settings.json

{
  "editor.codeActionsOnSave": null
}

settings.json 中粘贴以下代码:

.vscode/settings.json

{
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "eslint.validate": ["javascript"]
 }

现在,撤消对之前创建的 JavaScript 文件所做的修复。 然后保存文件。 可自动修复的问题将被自动解决。

结论

在本教程中,您安装了 ESLint,构建了规则,并在 Visual Studio Code 中启用了 codeActionsOnSave