网站 |配置 ESLint |规则|为 ESLint 做出贡献 |报告错误 |行为准则 |推特 |不和谐|乳齿象
ESLint 是一种用于识别和报告 ECMAScript/JavaScript 代码中发现的模式的工具。在许多方面,它与 JSLint 和 JSHint 类似,但有一些例外:
先决条件:使用 SSL 支持构建的 Node.js( ^18.18.0
、 ^20.9.0
或>=21.1.0
)。 (如果您使用官方 Node.js 发行版,则始终内置 SSL。)
您可以使用以下命令安装和配置 ESLint:
npm init @eslint/config@latest
之后,您可以在任何文件或目录上运行 ESLint,如下所示:
npx eslint yourfile.js
您可以在eslint.config.js
文件中配置规则,如下例所示:
export default [
{
files : [ "**/*.js" , "**/*.cjs" , "**/*.mjs" ] ,
rules : {
"prefer-const" : "warn" ,
"no-constant-binary-expression" : "error"
}
}
] ;
名称"prefer-const"
和"no-constant-binary-expression"
是 ESLint 中规则的名称。第一个值是规则的错误级别,可以是以下值之一:
"off"
或0
- 关闭规则"warn"
或1
- 打开规则作为警告(不影响退出代码)"error"
或2
- 将规则作为错误打开(退出代码将为 1)三个错误级别允许您对 ESLint 如何应用规则进行细粒度控制(有关更多配置选项和详细信息,请参阅配置文档)。
ESLint 团队为当前版本提供持续支持,并为先前版本提供六个月的有限支持。有限支持仅包括关键错误修复、安全问题和兼容性问题。
ESLint 通过我们的合作伙伴 Tidelift 和 HeroDevs 为当前和以前的版本提供商业支持。
有关更多详细信息,请参阅版本支持。
ESLint 遵守 OpenJS 基金会行为准则。
在提交问题之前,请务必阅读您所报告内容的指南:
是的,ESLint 原生支持解析 JSX 语法(必须在配置中启用)。请注意,支持 JSX 语法与支持 React不同。 React 将特定语义应用于 ESLint 无法识别的 JSX 语法。如果您使用 React 并且想要 React 语义,我们建议使用 eslint-plugin-react。
不,ESLint 和 Prettier 有不同的工作:ESLint 是一个 linter(寻找有问题的模式),而 Prettier 是一个代码格式化程序。这两种工具的使用都很常见,请参阅 Prettier 的文档以了解如何配置它们以使其相互兼容。
ESLint 完全支持 ECMAScript 3、5,并且从 2015 年开始一直支持到最新的第 4 阶段规范(默认)。您可以通过配置设置所需的 ECMAScript 语法和其他设置(如全局变量)。
ESLint 的解析器仅正式支持最新的最终 ECMAScript 标准。我们将对核心规则进行更改,以避免第 3 阶段 ECMAScript 语法提案崩溃(只要它们使用正确的实验性 ESTree 语法实现)。我们可能会根据具体情况对核心规则进行更改,以便更好地使用语言扩展(例如 JSX、Flow 和 TypeScript)。
在其他情况下(包括由于新语法规则需要对更多或更少的情况发出警告,而不仅仅是不崩溃),我们建议您使用其他解析器和/或规则插件。如果您使用 Babel,则可以使用 @babel/eslint-parser 和 @babel/eslint-plugin 来使用 Babel 中可用的任何选项。
一旦语言功能被采用到 ECMAScript 标准(根据 TC39 流程的第 4 阶段),我们将根据我们的贡献指南接受与新功能相关的问题和拉取请求。在此之前,请为您的实验功能使用适当的解析器和插件。
ESLint 随着 ESLint 的每个主要版本更新支持的 Node.js 版本。届时,ESLint 支持的 Node.js 版本更新为:
ESLint 预计还可以与 Node.js Current 版本之后发布的 Node.js 版本一起使用。
请参阅快速入门指南,了解给定 ESLint 版本的官方支持的 Node.js 版本。
展开讨论或访问我们的 Discord 服务器。
像package-lock.json
这样的锁定文件对于已部署的应用程序很有帮助。它们确保环境之间和部署之间的依赖关系保持一致。
发布到 npm 注册表的eslint
等软件包不包含锁定文件。 npm install eslint
作为用户将遵守 ESLint 的package.json
中的版本约束。 ESLint 及其依赖项将包含在用户的锁定文件(如果存在)中,但不会使用 ESLint 自己的锁定文件。
我们有意不锁定依赖项版本,以便我们在开发和 CI 中拥有用户在项目中安装 ESLint 时获得的最新兼容依赖项版本。
Twilio 博客有更深入的了解,可以了解更多信息。
我们计划每两周在周五或周六发布一次。您可以关注发布问题以获取有关任何特定发布的计划的更新。
ESLint 非常重视安全性。我们努力确保 ESLint 对每个人来说都是安全的,并确保安全问题得到快速、负责任的解决。阅读完整的安全策略。
ESLint 遵循语义版本控制。然而,由于 ESLint 作为代码质量工具的性质,并不总是清楚何时发生次要或主要版本冲突。为了帮助大家澄清这一点,我们为 ESLint 定义了以下语义版本控制策略:
eslint:recommended
已更新,将导致严格减少 linting 错误(例如,规则删除)。eslint:recommended
已更新,可能会导致新的 linting 错误(例如,规则添加、大多数规则选项更新)。根据我们的政策,任何次要更新都可能报告比之前版本更多的 linting 错误(例如:来自错误修复)。因此,我们建议在package.json
中使用波形符 ( ~
),例如"eslint": "~3.1.0"
以保证构建的结果。
根据我们如何评估新规则和规则变更的政策,风格规则被冻结。这意味着:
这些人使项目得以顺利进行,并且是提供帮助的资源。
管理版本、审查功能请求并定期开会以确保 ESLint 得到正确维护的人员。