如何从头开始为你的项目配置 ESLint
ESLint 是一款代码检查工具,它可以帮助提升代码质量,并提前修复 bug,避免在运行时再次出现 bug。它还能避免将来出现难以调试的问题。
了解如何使用 ESLint 非常重要,因为大多数公司都在积极使用它。
还有其他可用的 linters,如 jslint、jshint,但 ESLint 是最广泛使用和最受欢迎的。
在本文中,我们将探讨什么是 ESLint 以及如何使用它。
让我们开始吧。
当发生以下情况时,ESLint 会显示警告或错误消息
- 我们使用一个变量而没有声明它
- 我们重新声明变量
- 我们尝试改变常数值
- 我们添加了不必要的括号
- 当我们使用错误的语法时
ESLint 还根据首选代码风格和错误语法提供建议。
请注意,ESLint 仅显示警告或错误,以便您修复它们,但它不会阻止程序运行。
ESLint网站非常好,文档齐全,详细描述了每个部分以及与之相关的各种规则和信息。
安装:
创建一个名为的新文件夹eslint-setup
,并从该文件夹内在终端中执行以下命令:
npm init -y
OR
yarn init -y
这将创建一个package.json
文件。
现在,将该eslint
包安装为开发依赖项,因为它仅用于开发而不是生产。
npm install eslint --save-dev
OR
yarn add eslint --dev
这会将eslint
条目添加到文件devDependencies
的部分package.json
。
基本配置
index.js
在您的文件夹中创建一个新文件eslint-setup
,并在其中添加以下变量声明并保存:
var name;
你会发现,没有显示任何错误。这是因为我们需要做两件事。
- 安装 eslint VS Code 扩展
- 创建 .eslintrc 文件
那么我们就这么做吧。
安装 ESLint VS Code 扩展,如下所示:
现在创建一个新文件.eslintrc
(doteslintrc),使用以下代码:
{
"extends": "eslint:recommended"
}
这将添加对基本推荐的 ESLint 规则的支持。保存文件,然后打开index.js
,您将看到带有消息的变量带有红色下划线。
因此,ESLint 将确保您不会创建永远不会使用的不必要的变量。
错误消息中括号中的名称(no-unused-vars)是规则的名称,我们可以在.eslintrc
文件中配置该规则以显示或隐藏消息。
如果您不想看到红色下划线,您可以.eslintrc
通过在文件中添加规则来禁用它:
{
"extends": "eslint:recommended",
"rules": {
"no-unused-vars": "off"
}
}
经过此更改,它将不再显示红色下划线,但通常情况下,您不应禁用该no-unused-vars
规则,因为它有助于避免创建未使用的变量。
现在让我们在文件中使用一些 ES6 功能index.js
:
打开index.js
文件并在其中添加以下代码:
const user = 'Harry';
console.log(user);
现在,您将看到 const 关键字的红色下划线。
这是因为默认情况下 ESLint 在 ES5 环境中运行代码。
为了指定 ES6 并指定代码可以在浏览器或节点环境中运行,我们可以将其作为.eslintrc
文件中的另一个属性添加:
{
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 6
},
"env": {
"node": true,
"browser": true,
"es6": true
}
}
在这里,parserOptions
我们指定要使用哪个 ecmaVersion。
如果将鼠标悬停在数字 6 上,您可以看到有关所有可用版本的其他信息。
您可以根据需要更改该值。
您可以在此处查看所有可用的环境。
导航到此URL并单击规则配置按钮,您可以选中或取消选中环境并通过在文本区域中输入来验证代码。
根据 Airbnb 风格指南进行 Linting:
使用"extends": "eslint:recommended"
内部.eslintrc
文件是可以的,但它并未涵盖所有样式指南。Airbnb 提供的所有项目中都有更多可用且广泛使用的指南,您可以点击此处访问。
这些指导方针帮助我们
- 在需要时避免使用新运算符创建对象。
- 如果变量不会改变,当我们使用 let 而不是 const 时也会显示警告。
- 帮助在使用运算符或函数时添加和避免额外的空格。等等。
Airbnb 提供 JavaScript 和 React linting 支持。
要仅对 JavaScript 进行 linting 而不使用 React,您可以安装以下依赖项:
npm install eslint-config-airbnb-base@latest eslint-plugin-import --save-dev
OR
yarn add eslint-config-airbnb-base@latest eslint-plugin-import --dev
您可以在此处找到更多相关信息。
要使用 React 设置 JavaScript 的 linting,请安装以下依赖项:
npm install eslint-config-airbnb@latest eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y --save-dev
OR
yarn add eslint-config-airbnb@latest eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y --dev
您可以在此处找到更多相关信息。
并在.eslintrc
文件中,更改
"extends": "eslint:recommended",
到
"extends": "airbnb",
现在,让我们编写一些 React 代码并检查 linting。
现在,打开index.js
文件并在其中添加以下代码:
import React from 'react';
import ReactDOM from 'react-dom';
const App = () => <h1>This is some JSX</h1>;
ReactDOM.render(<App />, document.getElementById('root'));
如果您保存文件,您将看到许多红色下划线,内容为:
- 无法找到包 react、react-dom
- “App” 不会被重新赋值。请使用“const”
- 扩展名为“js”的文件中不允许使用 JSX
要修复第一个错误,请安装react
和react-dom
包:
npm install react react-dom
OR
yarn add react react-dom
现在,对于第二个错误,我们需要将其更改let
为,const
因为它从未改变过。
因此,始终建议const
在其值不会改变时使用。
如您所见,linting 提供了有用的建议来帮助您编写更好的代码。
如果您想了解更多关于任何错误的含义,只需复制鼠标悬停在红色下划线上时括号中显示的规则名称,然后在 Google 中搜索即可。点赞后prefer-const eslint
,它会显示有关如何修复以及它会导致哪些问题的所有信息。
要查找有关任何规则的更多信息以及如何禁用它,您可以在此处的规则页面上搜索该规则。
如果将鼠标悬停在第 6 行的 JSX 红色下划线上,您可以看到其规则名称“react/jsx-filename-extension”。
如果您无法在此处的规则页面上找到该规则,您可以在 Google 中搜索react/jsx-filename-extension
eslint,然后您将看到显示如何修复它的结果,如此处所示。
因此,为了禁用此检查,我们可以在文件中添加一条规则.eslintrc
:
"rules": {
"react/jsx-filename-extension": "off"
}
该值通常为以下之一:
- 警告:显示为警告
- 错误:显示为错误
- off:不显示红色下划线
有时您可能会发现,文档中使用错误代码,而不是文本警告、错误或关闭。
0 表示关闭,1 表示警告,2 表示错误。
现在,如果您保存.eslintrc
文件,您将看到文件中不再有红色下划线index.js
。
本文就到这里。希望你学到了一些新东西。
感谢阅读!
您可以在此处找到本文的完整 Github 源代码,其中包含 .eslintrc 中的附加配置,以便更好地进行 linting 。
查看我最近发布的Mastering Redux课程。
在本课程中,您将构建 3 个应用程序以及食品订购应用程序,您将学习:
- Redux 基础与高级
- 如何管理数组和对象的复杂状态
- 如何使用多个 Reducer 来管理复杂的 Redux 状态
- 如何调试 Redux 应用程序
- 如何在 React 中使用 Redux,使用 react-redux 库让你的应用程序具有响应性。
- 如何使用 redux-thunk 库处理异步 API 调用等等
最后,我们将从头开始构建一个完整的食品订购应用程序,并通过条纹集成来接受付款并将其部署到生产中。
想要定期了解有关 JavaScript、React 和 Node.js 的最新内容吗?请在 LinkedIn 上关注我。
鏂囩珷鏉ユ簮锛�https://dev.to/myogeshchavan97/how-to-configure-eslint-for-your-project-from-scratch-4kg