diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index d0353fe..ae01bac 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -12,7 +12,7 @@ diff --git a/src/developer-guide/architecture/index.md b/src/contribute/architecture/index.md similarity index 100% rename from src/developer-guide/architecture/index.md rename to src/contribute/architecture/index.md diff --git a/src/developer-guide/code-conventions.md b/src/contribute/code-conventions.md similarity index 100% rename from src/developer-guide/code-conventions.md rename to src/contribute/code-conventions.md diff --git a/src/developer-guide/development-environment.md b/src/contribute/development-environment.md similarity index 98% rename from src/developer-guide/development-environment.md rename to src/contribute/development-environment.md index 0eb8a18..e50ddb4 100644 --- a/src/developer-guide/development-environment.md +++ b/src/contribute/development-environment.md @@ -71,7 +71,7 @@ npm test ### 工作流程 -在安装好开发环境后,你就可以对 ESLint 的源文件进行修改并提交。提交时需要认真遵守我们的 [pull-request 提交工作流程](contributing/pull-requests)。 +在安装好开发环境后,你就可以对 ESLint 的源文件进行修改并提交。提交时需要认真遵守我们的 [pull-request 提交工作流程](./pull-requests)。 ### 构建脚本 diff --git a/src/maintainer-guide/governance.md b/src/contribute/governance.md similarity index 95% rename from src/maintainer-guide/governance.md rename to src/contribute/governance.md index 6a4a828..2dc0dbd 100644 --- a/src/maintainer-guide/governance.md +++ b/src/contribute/governance.md @@ -28,7 +28,7 @@ ESLint 是一个依赖于社区贡献者的开源项目。每个人都可以随 ### 网站团队成员 -网站团队成员是社区成员,他们通过与社区的持续接触,表明他们致力于持续维护 [eslint.org](https://eslint.org/)。网站团队成员被赋予推送访问 GitHub `eslint.org` 仓库的权利,并且必须遵守项目的[贡献指南](../developer-guide/contributing/)。 +网站团队成员是社区成员,他们通过与社区的持续接触,表明他们致力于持续维护 [eslint.org](https://eslint.org/)。网站团队成员被赋予推送访问 GitHub `eslint.org` 仓库的权利,并且必须遵守项目的[贡献指南](../contribute/)。 网站团队成员: @@ -36,8 +36,8 @@ ESLint 是一个依赖于社区贡献者的开源项目。每个人都可以随 * 当不再需要时,应删除的公开分支 * 必须为所有修改提交拉取请求。 * 审查者和 TSC 成员会对他们的工作进行审查,然后才会接受到版本库中。 -* 可以标记和关闭与网站有关的议题(见[议题管理](issues))。 -* 可以合并一些拉取请求(见[拉取请求管理](pullrequests))。 +* 可以标记和关闭与网站有关的议题(见[议题管理](../maintain/manage-issues))。 +* 可以合并一些拉取请求(见[拉取请求管理](../maintain/review-pull-requests))。 要成为网站团队成员: @@ -51,16 +51,16 @@ ESLint 是一个依赖于社区贡献者的开源项目。每个人都可以随 ### 提交者 -提交者是指那些通过持续参与社区活动,表明他们致力于项目的持续发展的社区成员。提交者被赋予推送访问项目的GitHub仓库的权限,并且必须遵守项目的[贡献指南](../developer-guide/contributing/)。 +提交者是指那些通过持续参与社区活动,表明他们致力于项目的持续发展的社区成员。提交者被赋予推送访问项目的GitHub仓库的权限,并且必须遵守项目的[贡献指南](../contribute/)。 提交者: * 希望在源码库的公开分支上工作,并从该分支向主分支提交拉取请求。 * 当他们不再需要时,应删除他们的公开分支 * 必须为所有修改提交拉取请求 -* 在 TSC 成员审查他后,再合并仓库中 -* 可以标记和关闭议题(见[管理议题](issues)) -* 可以合并一些拉取请求(见[管理拉取请求](pullrequests)) +* 在 TSC 成员审查后,再合并仓库中 +* 可以标记和关闭议题(见[管理议题](../maintain/manage-issues)) +* 可以合并一些拉取请求(见[管理拉取请求](../maintain/review-pull-requests)) 要成为提交者: @@ -102,7 +102,7 @@ ESLint 是一个依赖于社区贡献者的开源项目。每个人都可以随 #### 新增审查者流程 -1. 将 GitHub用户 添加到 GitHub ESLint Reviewers 团队中。 +1. 将 GitHub 用户添加到 GitHub ESLint Reviewers 团队中。 1. 用 ESLint Twitter 账户发推祝贺新的审查者 ### 技术指导委员会(TSC) diff --git a/src/developer-guide/contributing/index.md b/src/contribute/index.md similarity index 92% rename from src/developer-guide/contributing/index.md rename to src/contribute/index.md index 87cb046..e7ba3e8 100644 --- a/src/developer-guide/contributing/index.md +++ b/src/contribute/index.md @@ -16,19 +16,19 @@ eleventyNavigation: ESLint 欢迎每个人的贡献,并遵守 [OpenJS 基金会的行为准则](https://eslint.org/conduct)。我们恳请您在投稿前仔细阅读我们的行为准则。 -## [错误报告](reporting-bugs) +## [错误报告](report-bugs) 你认为你发现了一个问题?我们很乐意听到这个问题。本节解释了如何提交一个 bug,我们需要什么样的信息来正确验证它,以及整个过程。 -## 提议[新规则](new-rules) +## 提议[新规则](propose-new-rule) 我们在 ESLint 中收到很多关于新规则的提议。本节解释了我们如何确定哪些规则被接受,以及你应该提供哪些信息来帮助我们评估你的建议。 -## 提议[规则修改](rule-changes) +## 提议[规则修改](propose-rule-change) 想对现有的规则进行修改?本节解释了这一过程以及我们如何评估此类提案。 -## 请求[修改](changes) +## 请求[修改](request-change) 如果你想请求一个除错误修复或新规则之外的变化,本节将解释这一过程。 @@ -36,7 +36,7 @@ ESLint 欢迎每个人的贡献,并遵守 [OpenJS 基金会的行为准则](ht 要报告 ESLint 的安全漏洞,请使用我们的 [HackerOne 程序](https://hackerone.com/eslint)。 -## [专注议题](working-on-issues) +## [专注议题](work-on-issue) 有一些额外的时间并想做出贡献?本节讲述了在议题上工作的过程。 diff --git a/src/developer-guide/package-json-conventions.md b/src/contribute/package-json-conventions.md similarity index 97% rename from src/developer-guide/package-json-conventions.md rename to src/contribute/package-json-conventions.md index 06c4223..4e54fba 100644 --- a/src/developer-guide/package-json-conventions.md +++ b/src/contribute/package-json-conventions.md @@ -1,6 +1,6 @@ --- title: Package.json Conventions -edit_link: https://github.com/eslint/eslint/edit/main/docs/src/developer-guide/package-json-conventions.md +edit_link: https://github.com/eslint/eslint/edit/main/docs/src/contribute/package-json-conventions.md --- The following applies to the "scripts" section of `package.json` files. diff --git a/src/developer-guide/contributing/new-rules.md b/src/contribute/propose-new-rule.md similarity index 97% rename from src/developer-guide/contributing/new-rules.md rename to src/contribute/propose-new-rule.md index 269e659..2c616d8 100644 --- a/src/developer-guide/contributing/new-rules.md +++ b/src/contribute/propose-new-rule.md @@ -42,4 +42,4 @@ ESLint 团队不会实施用户建议的新规则,因为我们的人数有限 ## 替代方案:创建你自己的规则 -请记住,ESLint 是完全可扩展,这意味着你可以创建你自己的规则并使用插件发布。我们这样做是有目的的,因为我们不想成为所有可能的规则的看门人。即使我们不接受一个规则进入核心,这也不意味着你不能拥有你想要的确切规则。更多信息请参见[创建规则](../working-with-rules)和[创建插件](../working-with-plugins)文档。 +请记住,ESLint 是完全可扩展,这意味着你可以创建你自己的规则并使用插件发布。我们这样做是有目的的,因为我们不想成为所有可能的规则的看门人。即使我们不接受一个规则进入核心,这也不意味着你不能拥有你想要的确切规则。更多信息请参见[创建规则](../extend/custom-rules)和[创建插件](../extend/plugins)文档。 diff --git a/src/developer-guide/contributing/rule-changes.md b/src/contribute/propose-rule-change.md similarity index 94% rename from src/developer-guide/contributing/rule-changes.md rename to src/contribute/propose-rule-change.md index c3e2f90..db1ef68 100644 --- a/src/developer-guide/contributing/rule-changes.md +++ b/src/contribute/propose-rule-change.md @@ -15,7 +15,7 @@ title: Rule Changes 为了使规则变更被 ESLint 接受,它必须: -1. 遵守 [核心规则指南](new-rules#core-rule-guidelines) +1. 遵守[核心规则指南](propose-new-rule#核心规则指南) 1. 有一名 ESLint 团队成员支持该更改。 1. 足够重要,如果没有这个变化,规则被认为是不完整的。 diff --git a/src/developer-guide/contributing/pull-requests.md b/src/contribute/pull-requests.md similarity index 93% rename from src/developer-guide/contributing/pull-requests.md rename to src/contribute/pull-requests.md index 4974d1d..c7612cd 100644 --- a/src/developer-guide/contributing/pull-requests.md +++ b/src/contribute/pull-requests.md @@ -9,8 +9,8 @@ title: 拉取请求 如果你想在拉动请求上工作,而你以前从未提交过代码,请遵循以下步骤: -1. 建立[开发环境](../development-environment)。 -1. 如果你想实现破坏性改变或要对核心的改变,请确保要对当前所做事情进行描述,并且该问题已经被接受。你可以创建新议题,也可以表明你在[处理现有的议题](working-on-issues)。错误修复、文档修改和其他拉动请求则无需有对应议题。 +1. 建立[开发环境](./development-environment)。 +1. 如果你想实现破坏性改变或要对核心的改变,请确保要对当前所做事情进行描述,并且该问题已经被接受。你可以创建新议题,也可以表明你在[处理现有的议题](./work-on-issue)。错误修复、文档修改和其他拉动请求则无需有对应议题。 在这之后,你就可以开始处理代码了。 @@ -42,7 +42,7 @@ git checkout -b issue1234 ### 第二步:进行修改 -对代码和测试进行修改,在修改过程中遵循[代码约定](../code-conventions)。完成后,将修改提交到你的分支。 +对代码和测试进行修改,在修改过程中遵循[代码约定](./code-conventions)。完成后,将修改提交到你的分支。 ```shell git add -A @@ -75,7 +75,7 @@ Fixes #1234 * `ci` - 对我们的 CI 配置文件和脚本的修改。 * `perf` - 修改代码以提高性能。 -使用[你正在处理的问题的标签](working-on-issues#issue-labels)来确定最佳标签。 +使用[你正在处理的问题的标签](./work-on-issue#议题标签)来确定最佳标签。 消息摘要应该是对修改的一句话描述,长度必须是 72 个字符或更短。如果拉动请求解决了一个问题,那么在提交信息的正文中应该提到问题编号,格式为 `Fixes #1234`。如果提交的内容没有完全解决该问题,那么就用 `Refs #1234` 代替 `Fixes #1234`。 @@ -119,7 +119,7 @@ npm test * 为不相关的改动提出单独的拉动请求。有多个不相关变化的大型拉动请求可能会被关闭而不被合并。 * 所有的修改都必须有测试,即使你正在做的功能以前没有测试。 * 所有面向用户的修改必须有适当的文档。 -* 遵循[代码约定](../code-conventions)。 +* 遵循[代码约定](./code-conventions)。 ### 第六步:提交更改 @@ -179,7 +179,7 @@ git push origin issue1234 ### 变基 -如果你的代码已经过期,我们可能会要求你重新发布。这意味着我们希望你在最新的上游代码基础上应用你的修改。请确保你已经配置好了[开发环境](../development-environment),然后你就可以使用这些命令重新发布。 +如果你的代码已经过期,我们可能会要求你重新发布。这意味着我们希望你在最新的上游代码基础上应用你的修改。请确保你已经配置好了[开发环境](./development-environment),然后你就可以使用这些命令重新发布。 ```shell git fetch upstream diff --git a/src/developer-guide/contributing/reporting-bugs.md b/src/contribute/report-bugs.md similarity index 100% rename from src/developer-guide/contributing/reporting-bugs.md rename to src/contribute/report-bugs.md diff --git a/src/developer-guide/contributing/changes.md b/src/contribute/request-change.md similarity index 100% rename from src/developer-guide/contributing/changes.md rename to src/contribute/request-change.md diff --git a/src/developer-guide/source-code.md b/src/contribute/source-code.md similarity index 100% rename from src/developer-guide/source-code.md rename to src/contribute/source-code.md diff --git a/src/developer-guide/unit-tests.md b/src/contribute/tests.md similarity index 100% rename from src/developer-guide/unit-tests.md rename to src/contribute/tests.md diff --git a/src/developer-guide/contributing/working-on-issues.md b/src/contribute/work-on-issue.md similarity index 88% rename from src/developer-guide/contributing/working-on-issues.md rename to src/contribute/work-on-issue.md index cabcddc..551f584 100644 --- a/src/developer-guide/contributing/working-on-issues.md +++ b/src/contribute/work-on-issue.md @@ -7,10 +7,10 @@ title: 着手处理议题 ## 议题标签 -我们给议题状态打上标签。[维护者指南](../../maintainer-guide/issues#当有新议题时)中有关于标签最完整的文档,但本页的信息对大多数贡献者足够了。作为贡献者,标签可以回答你最重要的问题有: +我们给议题状态打上标签。[维护者指南](../maintain/manage-issues#当有新议题时)中有关于标签最完整的文档,但本页的信息对大多数贡献者足够了。作为贡献者,标签可以回答你最重要的问题有: 1. 我可以就这个议题工作吗?如果你对向 ESLint 贡献没有或者经验不多,那么 [`good first issue`](https://github.com/eslint/eslint/labels/good%20first%20issue) 标签标记的议题就很适合你。否则,你可以选择来自 [`help wanted`](https://github.com/eslint/eslint/labels/help%20wanted) 标签的邀请。如果你有足够的经验,你可以尝试 [`accepted`](https://github.com/eslint/eslint/labels/accepted) 标签。此外,议题如果还没有准备好就会打上 `triage`、`evaluating` 或 `needs bikeshedding` 标签,而由于其他原因目前不能工作的问题,如依赖的错误,则被标记为 `blocked`。 -1. 这个问题是关于什么的?描述议题性质的标签包括 `bug`、`enhancement`、`feature`、`question`、`rule`、`documentation`、`core`、`build`、`cli`、`infrastructure`、`breaking` 和 `chore`。这些都在[维护者指南](../../maintainer-guide/issues#议题的类型)中有所记载。 +1. 这个问题是关于什么的?描述议题性质的标签包括 `bug`、`enhancement`、`feature`、`question`、`rule`、`documentation`、`core`、`build`、`cli`、`infrastructure`、`breaking` 和 `chore`。这些都在[维护者指南](../maintain/manage-issues#议题的类型)中有所记载。 1. 先解决哪个议题?因为存在很多议题,因此对议题优先级进行了排序。以下是从高到低的优先级列表: 1. **漏洞** - 项目的问题正在积极影响用户。我们希望尽可能快地解决这些问题。 diff --git a/src/developer-guide/code-path-analysis.md b/src/extend/code-path-analysis.md similarity index 100% rename from src/developer-guide/code-path-analysis.md rename to src/extend/code-path-analysis.md diff --git a/src/developer-guide/working-with-custom-formatters.md b/src/extend/custom-formatters.md similarity index 97% rename from src/developer-guide/working-with-custom-formatters.md rename to src/extend/custom-formatters.md index a283edf..2988a71 100644 --- a/src/developer-guide/working-with-custom-formatters.md +++ b/src/extend/custom-formatters.md @@ -129,9 +129,9 @@ eslint -f awesome src/ formatter 函数的第二个实参应为对象。该对象有以下属性: -* `cwd` ... 当前工作目录。这个值来自 [ESLint](nodejs-api#-new-eslintoptions) 类中的 `cwd` 构造器选项。 +* `cwd` ... 当前工作目录。这个值来自 [ESLint](../integrate/nodejs-api#-new-eslintoptions) 类中的 `cwd` 构造器选项。 * `maxWarningsExceeded`(可选):如果设置了 `--max-warnings` 且警告数量达到限制,则此对象将包括两个属性:值为 `--max-warnings` 选项的 `maxWarnings` 和值为检查出的警告数量的 `foundWarnings`。 -* `rulesMeta` ... 规则的 `meta` 属性值。关于规则的更多信息,请参见[使用规则](working-with-rules)页面。 +* `rulesMeta` ... 规则的 `meta` 属性值。关于规则的更多信息,请参见[使用规则](custom-rules)页面。 例如,如果运行了 `no-extra-semi` 规则,对象会是这样的: @@ -375,7 +375,7 @@ error semi ### 复杂的实参传递 -如果你发现自定义格式化模式没有为你想要格式化 ESLint 结果的方式提供足够的选项,最好的选择是使用 ESLint 内置的 [JSON 格式化工具](../user-guide/formatters/),并将把输出传递到第二个程序。比如说: +如果你发现自定义格式化模式没有为你想要格式化 ESLint 结果的方式提供足够的选项,最好的选择是使用 ESLint 内置的 [JSON 格式化工具](../use/formatters/),并将把输出传递到第二个程序。比如说: ```bash eslint -f json src/ | your-program-that-reads-JSON --option diff --git a/src/developer-guide/working-with-custom-parsers.md b/src/extend/custom-parsers.md similarity index 100% rename from src/developer-guide/working-with-custom-parsers.md rename to src/extend/custom-parsers.md diff --git a/src/developer-guide/working-with-rules-deprecated.md b/src/extend/custom-rules-deprecated.md similarity index 96% rename from src/developer-guide/working-with-rules-deprecated.md rename to src/extend/custom-rules-deprecated.md index cfd62ae..4664692 100644 --- a/src/developer-guide/working-with-rules-deprecated.md +++ b/src/extend/custom-rules-deprecated.md @@ -3,7 +3,7 @@ title: 创建规则(废弃) --- -**注意**:本页面涵盖了 ESLint <= 2.13.1 中的已被废弃的规则格式。[这是最新的规则格式](./working-with-rules)。 +**注意**:本页面涵盖了 ESLint <= 2.13.1 中的已被废弃的规则格式。[这是最新的规则格式](./custom-rules)。 ESLint 中的每个规则都有两个以其标识符命名的文件(如 `no-extra-semi`)。 @@ -37,7 +37,7 @@ module.exports.schema = []; // 无选项 ## 规则基础 -`schema`(数组)指定[选项](#options-schemas),这样 ESLint 可以防止无效的[规则配置](../user-guide/configuring/rules#configuring-rules) +`schema`(数组)指定[选项](#选项模式),这样 ESLint 可以防止无效的[规则配置](../use/configure/rules#规则配置) `create`(函数)返回对象,该对象包含 ESLint 调用的方法,在遍历 JavaScript 代码的抽象语法树 (AST,由 [ESTree](https://github.com/estree/estree) 定义)时 `"visit"` 节点。 @@ -47,7 +47,7 @@ module.exports.schema = []; // 无选项 一个规则可以使用当前节点和它周围的树来报告或修复问题: -下面是 [array-callback-return](./rules/array-callback-return) 规则的方法: +下面是 [array-callback-return](../rules/array-callback-return) 规则的方法: ```js function checkLastSegment (node) { @@ -77,7 +77,7 @@ module.exports = function(context) { `context` 对象包含额外的功能,有助于规则完成其工作。顾名思义,`context` 对象包含与规则的上下文相关的信息。`context` 对象有以下属性。 -* `parserOptions` - 为本次运行配置的解析器选项([查看更多细节](../user-guide/configuring/language-options#specifying-parser-options))。 +* `parserOptions` - 为本次运行配置的解析器选项([查看更多细节](../use/configure/language-options#specifying-parser-options))。 * `id` - 规则 ID。 * `options` - 规则选项的数组。 * `settings` - 配置中的 `settings`。 @@ -481,7 +481,7 @@ valid: [ ] ``` -`parserOptions` 的可用选项和预期语法与[配置](../user-guide/configuring/language-options#specifying-parser-options)中使用的相同。 +`parserOptions` 的可用选项和预期语法与[配置](../use/configure/language-options#specifying-parser-options)中使用的相同。 ### 编写测试 @@ -576,5 +576,5 @@ ESLint 的规则命名约定是相当简单的。 运行时规则的编写格式与所有其他规则相同。像其他规则一样创建你的规则,然后按照以下步骤进行。 1. 把你所有的运行时规则放在同一个目录下(即`eslint_rules`)。 -2. 创建[配置文件](../user-guide/configuring/) 并在 `rules` 键下指定你的规则 ID 错误等级。你的规则将不会运行,除非它在配置文件中的值为 `1` 或 `2`。 -3. 运行[命令行界面](../user-guide/command-line-interface),使用 `--rulesdir` 选项来指定你的运行规则的位置。 +2. 创建[配置文件](../use/configure/) 并在 `rules` 键下指定你的规则 ID 错误等级。你的规则将不会运行,除非它在配置文件中的值为 `1` 或 `2`。 +3. 运行[命令行界面](../use/command-line-interface),使用 `--rulesdir` 选项来指定你的运行规则的位置。 diff --git a/src/developer-guide/working-with-rules.md b/src/extend/custom-rules.md similarity index 95% rename from src/developer-guide/working-with-rules.md rename to src/extend/custom-rules.md index 1052e72..b5471c2 100644 --- a/src/developer-guide/working-with-rules.md +++ b/src/extend/custom-rules.md @@ -8,7 +8,7 @@ eleventyNavigation: --- -**注意**:本页涵盖了 ESLint >= 3.0.0 的最新规则格式。还有一个[废弃的规则格式](./working-with-rules-deprecated)。 +**注意**:本页涵盖了 ESLint >= 3.0.0 的最新规则格式。还有一个[废弃的规则格式](./custom-rules-deprecated)。 ESLint 中的每个规则都有三个以其标识符命名的文件(如 `no-extra-semi`)。 @@ -66,13 +66,13 @@ module.exports = { * `docs`(对象)是 ESLint 的核心规则所需要的。 - * `description` (string) 在 [rules index](./rules/) 中提供规则的简短描述。 - * `recommended` (boolean) 表示在[配置文件](./user-guide/configuring/configuration-files#extending-configuration-files) 中是否使用 `"extends": "eslint:recommended"` 属性启用该规则。 + * `description` (string) 在[规则页面](../rules/)中提供规则的简短描述。 + * `recommended` (boolean) 表示在[配置文件](../use/configure/configuration-files#扩展配置文件) 中是否使用 `"extends": "eslint:recommended"` 属性启用该规则。 * `url` (string) 指定可以访问完整文档的链接(使代码编辑器能够在突出显示的规则违反上提供一个有用的链接) 在自定义规则或插件中,你可以省略 `docs` 或在其中包含你需要的任何属性。 -* `fixable`(string)是 `"code"` 或 `"whitespace"`,如果[命令行]上的 `--fix` 选项(../user-guide/command-line-interface#-fix)自动修复规则报告的问题 +* `fixable`(string)是 `"code"` 或 `"whitespace"`,如果[命令行](../use/command-line-interface#-fix)上的 `--fix` 选项自动修复规则报告的问题 **重点**:`fixable` 属性对于可修复规则是强制性的。如果没有指定这个属性,ESLint 将在规则试图产生一个修复时抛出一个错误。如果规则不是可修复的,则省略 `fixable` 属性。 @@ -80,7 +80,7 @@ module.exports = { **重点**:`hasSuggestions` 属性对于提供建议的规则来说是强制性的。如果这个属性没有设置为 `true`,ESLint 将在规则试图产生建议时抛出一个错误。如果规则不提供建议,省略 `hasSuggestions` 属性。 -* `schema` (array) 指定了 [options](#options-schemas),所以 ESLint 可以防止无效的 [规则配置](../user-guide/configuring/rules#configuring-rules) +* `schema` (array) 指定了 [options](#选项模式),所以 ESLint 可以防止无效的[规则配置](../use/configure/rules#规则配置) * `deprecated` (boolean) 表示该规则是否已经被废弃。如果规则没有被废除,你可以省略 `deprecated` 属性。 @@ -127,17 +127,17 @@ module.exports = { `context` 对象包含了额外的功能,有助于规则完成其工作。顾名思义,`context` 对象包含与规则的上下文相关的信息。`context` 对象有以下属性: -* `parserOptions` - 为本次运行配置的解析器选项([了解详情](../user-guide/configuring/language-options#指定解析器选项))。 +* `parserOptions` - 为本次运行配置的解析器选项([了解详情](../use/configure/language-options#指定解析器选项))。 * `id` - 规则 ID。 -* `options` - 这个规则的[配置选项](../user-guide/configuring/rules#规则配置) 的数组。这个数组不包括规则的严重程度。更多信息,请参阅[这里](#contextoptions)。 -* `settings` - 配置中的[共享设置](../user-guide/configuring/configuration-files#添加共享设置)。 +* `options` - 这个规则的[配置选项](../use/configure/rules#规则配置) 的数组。这个数组不包括规则的严重程度。更多信息,请参阅[这里](#contextoptions)。 +* `settings` - 配置中的[共享设置](../use/configure/configuration-files#添加共享设置)。 * `parserPath` - 配置中的 `parser` 的名称。 * `parserServices` - 一个包含解析器提供的规则服务的对象。默认的解析器不提供任何服务。然而,如果一个规则打算与一个自定义的解析器一起使用,它可以使用 `parserServices` 来访问该解析器提供的任何服务(例如,TypeScript 解析器可以提供获取特定节点的计算类型的能力)。 此外,`context`对象有以下方法。 * `getAncestors()` - 返回当前遍历的节点的祖先数组,从 AST 的根开始,一直到当前节点的直接父节点。这个数组不包括当前遍历的节点本身。 -* `getCwd()` - 返回传递给 [Linter](./nodejs-api#linter) 的 `cwd`。它是一个目录的路径,应该被视为当前工作目录。 +* `getCwd()` - 返回传递给 [Linter](../integrate/nodejs-api#linter) 的 `cwd`。它是一个目录的路径,应该被视为当前工作目录。 * `getDeclaredVariables(node)` - 返回由给定节点声明的[变量](./scope-manager-interface#variable-接口) 的列表。这个信息可以用来跟踪对变量的引用。 * 如果该节点是 `VariableDeclaration`,则返回声明中的所有变量。 * 如果该节点是 `VariableDeclarator`,将返回所有在声明器中声明的变量。 @@ -163,7 +163,7 @@ module.exports = { #### 作用域类型 -下表列出了 AST 节点类型和与之对应的作用域类型。了解更多关于作用域类型的信息,请参见 [`Scope` 对象文档](./scope-manager-interface.md#scope-接口). +下表列出了 AST 节点类型和与之对应的作用域类型。了解更多关于作用域类型的信息,请参见 [`Scope` 对象文档](./scope-manager-interface#scope-接口). | AST 节点类型 | 作用域类型 | |:--------------------------|:-----------| @@ -429,7 +429,7 @@ context.report({ {% endraw %} ``` -**重点**:`meta.hasSuggestions`属性对于提供建议的规则来说是强制性的。如果一个规则试图产生一个建议,但没有[导出](#rule-basics)这个属性,ESLint 将抛出一个错误。 +**重点**:`meta.hasSuggestions`属性对于提供建议的规则来说是强制性的。如果一个规则试图产生一个建议,但没有[导出](#规则基础)这个属性,ESLint 将抛出一个错误。 注意:建议将作为一个独立的变化被应用,而不会触发多通道修复。每个建议都应该关注代码中的单一变化,不应该试图符合用户定义的风格。例如,如果一个建议是在代码库中添加一个新的语句,它不应该试图匹配正确的缩进,或符合用户对分号的存在/不存在的偏好。所有这些都可以通过用户触发的多通道自动修正来进行修正。 @@ -713,7 +713,7 @@ ESLint 在遍历 AST 时分析了代码路径。 ESLint core 的每个捆绑规则必须有一组单元测试与之一起提交才能被接受。测试文件的名称与源文件相同,但在 `tests/lib/` 中,如果规则的源文件是 `lib/rules/foo.js`,那么测试文件应该是 `tests/lib/rules/foo.js`。 -ESLint 提供了 [`RuleTester`](../developer-guide/nodejs-api#ruletester) 工具,以方便为规则编写测试。 +ESLint 提供了 [`RuleTester`](../integrate/nodejs-api#ruletester) 工具,以方便为规则编写测试。 ## 性能测试 @@ -795,5 +795,5 @@ ESLint 的规则命名约定是相当简单的。 运行时规则的编写格式与所有其他规则相同。像其他规则一样创建你的规则,然后按照以下步骤进行: 1. 把你所有的运行时规则放在同一个目录下(如 `eslint_rules`)。 -2. 创建[配置文件](../user-guide/configuring/) 并在 `rules` 键下指定你的规则 ID 错误级别。你的规则将不会运行,除非它在配置文件中的值是 `"warn"` 或 `"error"`。 -3. 运行[命令行界面](../user-guide/command-line-interface),使用 `--rulesdir`选项来指定你的运行规则的位置。 +2. 创建[配置文件](../use/configure/) 并在 `rules` 键下指定你的规则 ID 错误级别。你的规则将不会运行,除非它在配置文件中的值是 `"warn"` 或 `"error"`。 +3. 运行[命令行界面](../use/command-line-interface),使用 `--rulesdir`选项来指定你的运行规则的位置。 diff --git a/src/developer-guide/index.md b/src/extend/index.md similarity index 78% rename from src/developer-guide/index.md rename to src/extend/index.md index 71fe01f..c5ba9ae 100644 --- a/src/developer-guide/index.md +++ b/src/extend/index.md @@ -21,34 +21,34 @@ eleventyNavigation: 如果这听起来像你,那么继续阅读就可以开始了。 -## 第一节:获取[源代码](source-code) +## 第一节:获取[源代码](../contribute/source-code) 在你开始之前,你需要获得 ESLint 的代码。本节解释了如何做到这一点,以及关于源码结构的介绍。 -## 第2节:设置[开发环境](development-environment) +## 第2节:设置[开发环境](../contribute/development-environment) 开发 ESLint 与在命令行上运行它有些不同。本节告诉你如何在准备好写代码前先设置好开发环境。 -## 第三节:运行[单元测试](unit-tests) +## 第三节:运行[单元测试](../contribute/tests) ESLint 中包含了大量的单元测试,以确保代码质量够高。本节解释了如何运行单元测试。 -## 第四节:[使用规则](working-with-rules) +## 第四节:[使用规则](custom-rules) 你终于准备好开始处理规则了。你可能想修正现有的规则或创建新的规则。本节解释了如何做到这一点。 -## 第五节:[使用插件](working-with-plugins) +## 第五节:[使用插件](plugins) 你已经为 ESLint 开发了特定库规则,你想与社区分享它们。你可以在 npm 上发布 ESLint 插件。 -## 第六节:[使用自定义解析器](working-with-custom-parsers) +## 第六节:[使用自定义解析器](custom-parsers) 如果你不打算使用 ESLint 的默认解析器,本节将解释如何使用自定义解析器。 -## 第七节:[Node.js API](nodejs-api) +## 第七节:[Node.js API](../integrate/nodejs-api) 如果你有兴趣编写一个使用 ESLint 的工具,那么你可以使用 Node.js API 来获得程序化功能。 -## 第八节:[贡献](contributing/) +## 第八节:[贡献](../contribute/)) 如果你做了想与社区分享的改动,下一步就是通过 pull request 将这些改动提交回去。 diff --git a/src/developer-guide/working-with-plugins.md b/src/extend/plugins.md similarity index 91% rename from src/developer-guide/working-with-plugins.md rename to src/extend/plugins.md index 5d3ec49..cb75c35 100644 --- a/src/developer-guide/working-with-plugins.md +++ b/src/extend/plugins.md @@ -92,11 +92,11 @@ module.exports = { **`preprocess` 方法**将文件内容和文件名作为参数,并返回一个代码块的数组,以进行提示。这些代码块将被单独标记,但仍被注册到文件名上。 -一个代码块有两个属性 `text` 和 `filename`;`text` 属性是代码块的内容,`filename` 属性是代码块的名称。块的名称可以是任何东西,但应包括文件扩展名,这将告诉检查器如何处理当前块。检查器将检查 [`--ext` CLI 选项](../user-guide/command-line-interface#--ext),看当前块是否应该被检查,并解决 `overrides`配置,检查如何处理当前块。 +一个代码块有两个属性 `text` 和 `filename`;`text` 属性是代码块的内容,`filename` 属性是代码块的名称。块的名称可以是任何东西,但应包括文件扩展名,这将告诉检查器如何处理当前块。检查器将检查 [`--ext` CLI 选项](../use/command-line-interface#--ext),看当前块是否应该被检查,并解决 `overrides` 配置,检查如何处理当前块。 由插件决定它是否需要只返回一个部分,或多个部分。例如在处理 `.html` 文件的情况下,你可能想通过合并所有的脚本只返回数组中的一个项目,但对于 `.md` 文件,每个 JavaScript 块可能是独立的,你可以返回多个项目。 -**`postprocess`方法**接收一个二维数组,该数组包括检查器消息和文件名。输入数组中的每一项都对应于从 `preprocess` 方法返回的部分。`postprocess` 方法必须调整所有错误的位置,使其与原始的、未处理的代码中的位置相对应,并将其汇总为一个平面数组并返回。 +**`postprocess` 方法**接收一个二维数组,该数组包括检查器消息和文件名。输入数组中的每一项都对应于从 `preprocess` 方法返回的部分。`postprocess` 方法必须调整所有错误的位置,使其与原始的、未处理的代码中的位置相对应,并将其汇总为一个平面数组并返回。 报告的问题有以下位置信息: @@ -144,7 +144,7 @@ overrides: processor: a-plugin/markdown ``` -参见[指定处理器](../user-guide/configuring/plugins#指定处理器)获取详情。 +参见[指定处理器](../use/configure/plugins#指定处理器)获取详情。 #### 文件扩展名处理器 @@ -205,12 +205,12 @@ module.exports = { ``` -**注意**:请注意,配置将不会默认启用插件的任何规则,而应被视为一个独立的配置。这意味着你必须在 `plugins` 数组中指定你的插件名称,以及你想启用的属于该插件的任何规则。任何插件规则必须以短或长的插件名称为前缀。参见[配置插件](../user-guide/configuring/plugins#configuring-plugins)获取更多信息。 +**注意**:请注意,配置将不会默认启用插件的任何规则,而应被视为一个独立的配置。这意味着你必须在 `plugins` 数组中指定你的插件名称,以及你想启用的属于该插件的任何规则。任何插件规则必须以短或长的插件名称为前缀。参见[配置插件](../use/configure/plugins#配置插件)获取更多信息。 ### 对等依赖 为了明确该插件需要 ESLint 才能正常工作,你必须在你的 `package.json` 中将 ESLint 声明为 `peerDependency`。 -该插件的支持是在 ESLint `0.8.0`版本中引入的。确保 `peerDependency` 指向 ESLint `0.8.0` 或更高版本。 +该插件的支持是在 ESLint `0.8.0` 版本中引入的。确保 `peerDependency` 指向 ESLint `0.8.0` 或更高版本。 ```json { @@ -222,7 +222,7 @@ module.exports = { ### 测试 -ESLint 提供了 [`RuleTester`](nodejs-api#ruletester) 工具,以便测试插件规则。 +ESLint 提供了 [`RuleTester`](../integrate/nodejs-api#ruletester) 工具,以便测试插件规则。 ### 筛选 diff --git a/src/developer-guide/scope-manager-interface.md b/src/extend/scope-manager-interface.md similarity index 100% rename from src/developer-guide/scope-manager-interface.md rename to src/extend/scope-manager-interface.md diff --git a/src/developer-guide/selectors.md b/src/extend/selectors.md similarity index 100% rename from src/developer-guide/selectors.md rename to src/extend/selectors.md diff --git a/src/developer-guide/shareable-configs.md b/src/extend/shareable-configs.md similarity index 100% rename from src/developer-guide/shareable-configs.md rename to src/extend/shareable-configs.md diff --git a/src/developer-guide/nodejs-api.md b/src/integrate/nodejs-api.md similarity index 97% rename from src/developer-guide/nodejs-api.md rename to src/integrate/nodejs-api.md index e4036ec..91b909d 100644 --- a/src/developer-guide/nodejs-api.md +++ b/src/integrate/nodejs-api.md @@ -466,7 +466,7 @@ const codeLines = SourceCode.splitLines(code); `Linter` 是一个构造函数,你可以通过传入你想使用的选项来创建一个新实例。可用的选项有: -* `cwd` - 一个应该被视为当前工作目录的目录的路径。规则可以通过调用 `context.getCwd()` 访问它(见[上下文对象](./working-with-rules#the-context-object))。如果 `cwd` 是 `undefined`,如果全局的 `process` 对象被定义(例如,在 Node.js 运行时),它将被规范化为 `process.cwd()`,否则 `undefined`。 +* `cwd` - 一个应该被视为当前工作目录的目录的路径。规则可以通过调用 `context.getCwd()` 访问它(见[上下文对象](../extend/custom-rules#the-context-object))。如果 `cwd` 是 `undefined`,如果全局的 `process` 对象被定义(例如,在 Node.js 运行时),它将被规范化为 `process.cwd()`,否则 `undefined`。 比如: @@ -483,13 +483,13 @@ const linter2 = new Linter(); 检查器上最重要的方法是 `verify()`,它启动了对给定文本的提示。这个方法接受三个参数: -* `code` - 要检查的源代码(一个字符串或 `SourceCode` 的实例)。 +* `code` - 要检查的源代码(字符串或 `SourceCode` 的实例)。 * `config` - 一个配置对象,已经被 `ESLint` 使用 eslintrc 文件和/或其他配置参数处理并规范化。 **注意**: 如果你想对文本进行检查,并让你的配置被读取和处理,请使用 [`ESLint#lintFiles()`][eslint-lintfiles] 或 [`ESLint#lintText()`][eslint-linttext] 来代替。 * `options` -(可选)本次运行的附加选项。 * `filename` -(可选)与源代码相关的文件名。 - * `preprocess` -(可选)[插件中的处理器](working-with-plugins#processors-in-plugins)文档描述的 `preprocess` 方法。 - * `postprocess` -(可选)[插件中的处理器](working-with-plugins#processors-in-plugins)文档描述的 `postprocess` 方法的一个函数。 + * `preprocess` -(可选)[插件中的处理器](../extend/plugins#processors-in-plugins)文档描述的 `preprocess` 方法。 + * `postprocess` -(可选)[插件中的处理器](../extend/plugins#processors-in-plugins)文档描述的 `postprocess` 方法的一个函数。 * `filterCodeBlock` -(可选)一个函数,决定 interlet 应该采用哪些代码块。该函数接收两个参数。第一个参数是一个代码块的虚拟文件名。第二个参数是代码块的文本。如果该函数返回 `true`,那么检查器就采用该代码块。如果该函数被省略,则检查器只采用 `*.js` 的代码块。如果你提供了一个 `filterCodeBlock` 函数,它将覆盖这个默认行为,所以检查器不会自动采用 `*.js` 代码块。 * `disableFixes` -(可选)当设置为 `true` 时,检查器不对检查结果的 `fix` 或 `suggestions` 属性进行处理。 * `allowInlineConfig` -(可选)设置为 `false`,禁止内联注释改变 ESLint 规则。 @@ -553,7 +553,7 @@ const messages = linter.verify(code, { * `endColumn` - 发生错误的范围的结束列(如果不是范围,这个属性被省略)。 * `endLine` - 发生错误的范围的结束行(如果不是范围,这个属性被省略)。 * `fix` - 一个描述问题修复的对象(如果没有修复,这个属性被省略)。 -* `suggestions` - 一个对象数组,描述可能的 lint 修复方法,供编辑者以编程方式启用(详见 [Working with Rules docs](./working-with-rules#providing-suggestions))。 +* `suggestions` - 一个对象数组,描述可能的 lint 修复方法,供编辑者以编程方式启用(详见 [Working with Rules docs](../extend/custom-rules#providing-suggestions))。 你可以通过 `getSuppressedMessages()` 方法获得前一次运行中被抑制的信息。如果没有前一次运行,`getSuppressedMessage()` 将返回一个空列表。 @@ -685,7 +685,7 @@ Map { ### Linter#defineParser 每个 `Linter` 实例都持有一个自定义解析器的映射。如果你想以编程方式定义一个解析器,你可以添加这个函数 -第一个参数是解析器的名称,第二个参数是[解析器对象](../developer-guide/working-with-custom-parsers)。默认的 `"espree"` 解析器将已经为每个 `Linter` 实例加载。 +第一个参数是解析器的名称,第二个参数是[解析器对象](../extend/custom-parsers)。默认的 `"espree"` 解析器将已经为每个 `Linter` 实例加载。 ```js const Linter = require("eslint").Linter; @@ -702,7 +702,7 @@ const results = linter.verify("// some source text", { parser: "my-custom-parser ### Linter#version/Linter.version -每个 `Linter` 实例都有一个 `version` 属性,包含 `Linter`实例所在的 ESLint 的语义版本号。 +每个 `Linter` 实例都有一个 `version` 属性,包含 `Linter` 实例所在的 ESLint 的语义版本号。 ```js const Linter = require("eslint").Linter; @@ -765,7 +765,7 @@ const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2015 } }); `RuleTester#run()` 方法用于运行测试。它应该被传递给以下参数: * 规则的名称(字符串) -* 规则对象本身(见[“与规则一起工作”](./working-with-rules)) +* 规则对象本身(见[“与规则一起工作”](../extend/custom-rules)) * 一个包含 `valid` 和 `invalid` 属性的对象,每个属性都是一个包含测试案例的数组。 一个测试用例是一个具有以下属性的对象: @@ -916,8 +916,8 @@ ruleTester.run("my-rule", myRule, { --- -[配置对象]: ../user-guide/configuring/ -[builtin-formatters]: ../user-guide/formatters/ +[配置对象]: ../use/configure/ +[builtin-formatters]: ../use/formatters/ [third-party-formatters]: https://www.npmjs.com/search?q=eslintformatter [eslint-lintfiles]: #-eslintlintfilespatterns [eslint-linttext]: #-eslintlinttextcode-options diff --git a/src/maintainer-guide/index.md b/src/maintain/index.md similarity index 80% rename from src/maintainer-guide/index.md rename to src/maintain/index.md index 373624a..ce3ac20 100644 --- a/src/maintainer-guide/index.md +++ b/src/maintain/index.md @@ -9,19 +9,19 @@ eleventyNavigation: 本指南面向 ESLint项目组成员。 -## [议题管理](issues) +## [议题管理](manage-issues) 讲述了在有新议题时,该如何与用户互动,以及如何有效地处理议题。 -## [拉取请求审查](pullrequests) +## [拉取请求审查](review-pull-requests) 讲述了如何审查收到的拉取请求。 -## [版本管理](releases) +## [版本管理](manage-releases) 讲述了如何发布 ESLint 项目。 -## [治理](governance) +## [治理](../contribute/governance) 讲述了 ESLint 治理策略,包括了项目内部个人的权利和特权。 diff --git a/src/maintainer-guide/issues.md b/src/maintain/manage-issues.md similarity index 100% rename from src/maintainer-guide/issues.md rename to src/maintain/manage-issues.md diff --git a/src/maintainer-guide/releases.md b/src/maintain/manage-releases.md similarity index 100% rename from src/maintainer-guide/releases.md rename to src/maintain/manage-releases.md diff --git a/src/maintainer-guide/pullrequests.md b/src/maintain/review-pull-requests.md similarity index 100% rename from src/maintainer-guide/pullrequests.md rename to src/maintain/review-pull-requests.md diff --git a/src/maintainer-guide/working-groups.md b/src/maintain/working-groups.md similarity index 100% rename from src/maintainer-guide/working-groups.md rename to src/maintain/working-groups.md diff --git a/src/pages/index.md b/src/pages/index.md index ddeca42..9d80b27 100644 --- a/src/pages/index.md +++ b/src/pages/index.md @@ -5,14 +5,14 @@ permalink: /index.html 欢迎来到我们的文档页!你想知道点什么? -## [用户指南](user-guide/) +## [用户指南](use/) 面向 ESLint 终端用户。包括了核心规则、配置、命令行选项、格式化工具和集成的信息,以及从早期 ESLint 版本迁移的指南。 -## [开发者指南](developer-guide/) +## [开发者指南](extend/) 面向 ESLint 贡献者和致力于扩展 ESLint 的人。包括了配置向 ESLint 做出贡献、创建制度与规则、配置、插件和格式化工具的信息,以及关于 ESLint 架构和 Node.js API 的信息。 -## [维护者指南](maintainer-guide/) +## [维护者指南](maintain/) 面向 ESLint 维护者。 diff --git a/src/rules/class-methods-use-this.md b/src/rules/class-methods-use-this.md index a85b539..90ab38c 100644 --- a/src/rules/class-methods-use-this.md +++ b/src/rules/class-methods-use-this.md @@ -117,9 +117,9 @@ class A { "class-methods-use-this": [, { "exceptMethods": [<...exceptions>] }] ``` -`exceptMethods` 选项允许你传递一个数组的方法名称,你希望忽略这些方法的警告。例如,你可能有一个来自外部库的规范,要求你把一个方法作为普通函数(而不是静态方法)覆盖,并且在函数体中不使用 `this`。在这种情况下,你可以在警告中添加该方法来忽略。 +`"exceptMethods"` 选项允许传递包含你想要忽略警告的方法名的数组。例如,你可能有一个来自外部库的规范,要求你将方法作为普通函数(而不是静态方法)覆盖,并且在函数体中不能使用 `this`。在这种情况下,你可以在警告中添加该方法来忽略。 -使用此规则不使用 `exceptMethods`的**错误**示例: +使用此规则不使用 `"exceptMethods"` 的**错误**示例: ::: incorrect diff --git a/src/rules/eqeqeq.md b/src/rules/eqeqeq.md index 8517c9b..10ba635 100644 --- a/src/rules/eqeqeq.md +++ b/src/rules/eqeqeq.md @@ -40,7 +40,7 @@ if (obj.getStuff() != undefined) { } ### always -默认的 `"always"` 选项强制在任何情况下使用 `===` 和 `!==`(除非你选择了对 `null` 的更具体处理[见下文])。 +默认的 `"always"` 选项强制在任何情况下使用 `===` 和 `!==`(除非你选择了对 `null` 的更具体处理见下文)。 使用 `"always"` 选项的**错误**示例: @@ -137,7 +137,7 @@ foo == null ### allow-null -**废弃**:使用 `"always"` 代替这个选项,并传递一个 `"null"` 选项属性,值为 `"ignore"`。这将告诉 ESLint,除了与 `null` 字面量比较时,总是执行严格的相等判断。 +**废弃**:使用 `"always"` 代替这个选项,并传递值为 `"ignore"` 对`"null"` 选项属性。这将告诉 ESLint,除与 `null` 字面量比较外,其他时候总是执行严格的相等判断。 ```js ["error", "always", {"null": "ignore"}] diff --git a/src/rules/func-name-matching.md b/src/rules/func-name-matching.md index 134264e..aadde1a 100644 --- a/src/rules/func-name-matching.md +++ b/src/rules/func-name-matching.md @@ -144,7 +144,7 @@ module['exports'] = function foo(name) {}; ## 选项 -这个规则需要一个 `always` 或 `never` 的可选字符串(当省略时,默认为 `always`),以及一个带有两个属性 `considerPropertyDescriptor` 和 `includeCommonJSModuleExports` 的可选选项对象。 +这个规则需要一个 `"always"` 或 `"never"` 的可选字符串(当省略时,默认为 `"always"`),以及包括两个属性 `considerPropertyDescriptor` 和 `includeCommonJSModuleExports` 的可选选项对象。 ### considerPropertyDescriptor @@ -184,7 +184,7 @@ Reflect.defineProperty(obj, 'foo', {value: function value() {}}); ### includeCommonJSModuleExports -布尔值,默认为 `false`。如果 `includeCommonJSModuleExports` 被设置为 true,此规则将检查 `module.exports` 和 `module["exports"]`。 +布尔值,默认为 `false`。如果 `includeCommonJSModuleExports` 设置为 `true`,此规则将检查 `module.exports` 和 `module["exports"]`。 使用 `{ includeCommonJSModuleExports: true }` 选项的**错误**示例: diff --git a/src/rules/generator-star-spacing.md b/src/rules/generator-star-spacing.md index 5d89cb9..7968984 100644 --- a/src/rules/generator-star-spacing.md +++ b/src/rules/generator-star-spacing.md @@ -49,14 +49,14 @@ function * generator() { ## 选项 -规则需要一个选项,一个对象,它有两个键 `before` 和 `after`,可以是布尔值 `true` 或 `false`。 +规则需要一个选项,一个对象,它有两个键 `"before"` 和 `"after"`,可以是布尔值 `true` 或 `false`。 -* `before` 在 `*` 和 `function` 关键词之间强制执行间隔。 +* `"before"` 在 `*` 和 `function` 关键词之间强制执行间隔。 如果它是 `true`,则需要一个空格,否则不允许有空格。 在对象字面量速记方法中,不检查`*` 之前的间隔,因为它们缺少 `function` 关键字。 -* `after` 强制要求在 `*` 和函数名(或匿名生成器函数的开头括号)之间有间距。 +* `"after"` 强制要求在 `*` 和函数名(或匿名生成器函数的开头括号)之间有间距。 如果它是 `true`,则需要一个空格,否则不允许有空格。 默认值是 `{"before": true, "after": false}`。 @@ -74,7 +74,7 @@ function * generator() { * `{"before": true, "after": true}` → `"both"` * `{"before": false, "after": false}` → `"neither"` -速记配置实力: +速记配置示例: ```json "generator-star-spacing": ["error", "after"] @@ -97,8 +97,8 @@ function * generator() { }] ``` -在上面的配置示例中,顶层的 `before` 和 `after` 选项定义了规则的默认行为。规则,而 `anonymous` 和 `method` 选项则覆盖了默认行为。 -覆盖可以是一个带有 `before` 和 `after`的对象,也可以是上述的速记字符串。 +在上面的配置示例中,顶层的 `"before"` 和 `"after"` 选项定义了规则的默认行为。规则,而 `anonymous` 和 `method` 选项则覆盖了默认行为。 +覆盖可以是一个带有 `"before"` 和 `"after"`的对象,也可以是上述的速记字符串。 ## 示例 diff --git a/src/rules/id-denylist.md b/src/rules/id-denylist.md index 17359b4..056c530 100644 --- a/src/rules/id-denylist.md +++ b/src/rules/id-denylist.md @@ -36,7 +36,7 @@ rule_type: suggestion } ``` -**注意**:数组的第一个元素代表规则的严重程度(见[配置规则](../user-guide/configuring/rules)。数组中的其他元素是你想禁止的标识符。 +**注意**:数组的第一个元素代表规则的严重程度(见[配置规则](../use/configure/rules)。数组中的其他元素是你想禁止的标识符。 使用此规则与演示的 `"data"、"callback"` 限制性标识符的**错误**示例: diff --git a/src/rules/indent.md b/src/rules/indent.md index a1e0fa9..19d552b 100644 --- a/src/rules/indent.md +++ b/src/rules/indent.md @@ -79,7 +79,7 @@ if (a) { 此规则选项为对象: -* `"ignoredNodes"`可以用来禁用任何 AST 节点的缩进检查。它接受[选择器](../developer-guide/selectors)数组。如果一个 AST 节点被任何一个选择器匹配,作为该节点的直接子节点的缩进将被忽略。如果你不同意它对某一特定句法模式的缩进,这可以作为放宽规则的跳板。 +* `"ignoredNodes"` 可以用来禁用任何 AST 节点的缩进检查。它接受[选择器](../extend/selectors)数组。如果一个 AST 节点被任何一个选择器匹配,作为该节点的直接子节点的缩进将被忽略。如果你不同意它对某一特定句法模式的缩进,这可以作为放宽规则的跳板。 * `"SwitchCase"`(默认为 0) 对 `switch` 语句中的 `case` 子句执行缩进。 * `"VariableDeclarator"`(默认为 1) 对 `var` 声明者执行缩进级别;也可以采用一个对象来定义 `var`、`let` 和 `const` 声明的单独规则。它也可以是 `"first"`,表示所有的声明者应该与第一个声明者对齐。 * `"outerIIFEBody"`(默认为 1)强制执行文件级 IIFE 的缩进级别。这也可以设置为 `"off"`,以禁止对文件级 IIFEs 的检查。 diff --git a/src/rules/no-fallthrough.md b/src/rules/no-fallthrough.md index 54ee5a8..bd0849d 100644 --- a/src/rules/no-fallthrough.md +++ b/src/rules/no-fallthrough.md @@ -5,7 +5,7 @@ related_rules: - default-case --- -JavaScript 中的 `switch` 语句是该语言中最容易出错的结构之一,部分原因是它能够从一个 `case` “滑”到下一个。比如: +JavaScript 中的 `switch` 语句是该语言中最容易出错的结构之一,部分原因是它能够从一个 `case` 下沉到下一个。比如: ```js switch(foo) { @@ -30,7 +30,7 @@ switch(foo) { } ``` -当你不想要突破的时候,这样做很好,但是如果突破是故意的呢,在语言中没有办法表明这一点。最好的做法是使用与 `/falls?\s?through/i` 正则表达式相匹配的注释来表明突破是故意的: +当你不想要下沉的时候,这样做没问题,但是如果是故意要下沉的呢,在语言中没有办法表明这一点。最好的做法是使用与 `/falls?\s?through/i` 正则表达式相匹配但非指令的注释来表明是故意要下沉的: ```js switch(foo) { @@ -76,7 +76,7 @@ switch(foo) { ## 规则细节 -这条规则的目的是为了消除无意中从一个子句突破到另一个子句。因此,它标记了任何没有被注释标记的突破情况。 +这条规则的目的是为了消除无意中从一个子句到另一个子句。因此,它标记了任何没有被注释标记的突破情况。 使用此规则的**错误**示例: @@ -165,11 +165,11 @@ switch(foo) { ## 选项 -这个规则有一个对象选项。 +此规则有一个对象选项: -* 将 `commentPattern` 选项设置为正则表达式字符串,以改变对故意落空的注释的测试。 +* 将 `commentPattern` 选项设置为正则表达式字符串,以改变对故意下沉的注释的测试。如果下沉注释与指令相匹配,则优先于 `commentPattern`。 -* 将 `allowEmptyCase` 选项设置为 `true`,以允许空的情况,而不管布局如何。默认情况下,只有当空的 `case` 和下一个 `case` 在同一行或连续的行上时,该规则才不要求在空的 `case` 后有落空的注释。 +* 将 `allowEmptyCase` 选项设置为 `true`,以允许空的情况,而不管布局如何。默认情况下,只有当空的 `case` 和下一个 `case` 在同一行或连续的行上时,该规则才不要求在空的 `case` 后有下沉的注释。 ### commentPattern diff --git a/src/rules/no-global-assign.md b/src/rules/no-global-assign.md index fffd6dd..206fda0 100644 --- a/src/rules/no-global-assign.md +++ b/src/rules/no-global-assign.md @@ -21,8 +21,8 @@ window = {}; ESLint 有能力将全局变量配置为只读。 -* [Specifying Environments](../user-guide/configuring#specifying-environments) -* [Specifying Globals](../user-guide/configuring#specifying-globals) +* [Specifying Environments](../use/configure#specifying-environments) +* [Specifying Globals](../use/configure#specifying-globals) 使用此规则的**错误**示例: diff --git a/src/rules/no-implicit-globals.md b/src/rules/no-implicit-globals.md index 61c63a9..8c29a66 100644 --- a/src/rules/no-implicit-globals.md +++ b/src/rules/no-implicit-globals.md @@ -117,8 +117,8 @@ Bar.prototype.baz = function () { 一个只读的全局变量可以是 ES 内置的全局变量(如 `Array`),也可以是环境中的全局变量(如浏览器环境中的 `window`),或者在配置文件中定义为 `readonly` 的全局变量或在 `/*global */` 注释中定义的全局变量。 -* [指定环境](../user-guide/configuring#specifying-environments) -* [指定全局变量](../user-guide/configuring#specifying-globals) +* [指定环境](../use/configure#specifying-environments) +* [指定全局变量](../use/configure#specifying-globals) 使用此规则的**错误**示例: diff --git a/src/rules/no-native-reassign.md b/src/rules/no-native-reassign.md index 89d3d5c..b09e379 100644 --- a/src/rules/no-native-reassign.md +++ b/src/rules/no-native-reassign.md @@ -23,8 +23,8 @@ window = {}; ESLint 有能力将全局变量配置为只读。 -* [指定环境](../user-guide/configuring#specifying-environments) -* [指定全局变量](../user-guide/configuring#specifying-globals) +* [指定环境](../use/configure#specifying-environments) +* [指定全局变量](../use/configure#specifying-globals) 使用此规则的**错误**示例: diff --git a/src/rules/no-restricted-syntax.md b/src/rules/no-restricted-syntax.md index a3483dd..865d973 100644 --- a/src/rules/no-restricted-syntax.md +++ b/src/rules/no-restricted-syntax.md @@ -12,7 +12,7 @@ JavaScript 有很多语言特性,而不是每个人都喜欢所有的特性。 与其为每个你想关闭的语言功能创建单独的规则,这条规则允许你配置你想限制使用的语法元素。这些元素由其 [ESTree](https://github.com/estree/estree) 节点类型表示。例如,函数声明由 `FunctionDeclaration` 表示,`with` 语句由 `WithStatement` 表示。你可以[在 GitHub 上](https://github.com/eslint/eslint-visitor-keys/blob/main/lib/visitor-keys.js)找到你可以使用的 AST 节点名称的完整列表 ,并使用 [AST Explorer](https://astexplorer.net/) 与 espree 解析器来查看你的代码由哪些类型的节点组成。 -你也可以指定 [AST 选择器](../developer-guide/selectors) 来限制,允许对语法模式进行更精确的控制。 +你也可以指定 [AST 选择器](../extend/selectors) 来限制,允许对语法模式进行更精确的控制。 ## 规则细节 diff --git a/src/rules/no-undef.md b/src/rules/no-undef.md index f918210..7fd8761 100644 --- a/src/rules/no-undef.md +++ b/src/rules/no-undef.md @@ -10,7 +10,7 @@ related_rules: ## 规则细节 -任何对未声明变量的引用都会导致警告,除非该变量在 `/*global ...*/` 注释中明确提及,或者在配置文件中的 [`globals` key in the configuration file](../user-guide/configuring/language-options#using-configuration-files-1)。一个常见的使用情况是,如果你故意使用在其他地方定义的 globals(例如,在一个源自 HTML 的脚本中)。 +任何对未声明变量的引用都会导致警告,除非该变量在 `/*global ...*/` 注释中明确提及,或者在配置文件中的 [`globals` key in the configuration file](../use/configure/language-options#using-configuration-files-1)。一个常见的使用情况是,如果你故意使用在其他地方定义的 globals(例如,在一个源自 HTML 的脚本中)。 使用此规则的**错误**示例: @@ -94,7 +94,7 @@ if(typeof a === "string"){} ## Environments -为了方便起见,ESLint 提供了快捷方式,预先定义了由流行的库和运行时环境暴露的全局变量。本规则支持这些环境,如[指定环境](../user-guide/configuring/language-options#specifying-environments)中所列。 下面给出了几个例子: +为了方便起见,ESLint 提供了快捷方式,预先定义了由流行的库和运行时环境暴露的全局变量。本规则支持这些环境,如[指定环境](../use/configure/language-options#specifying-environments)中所列。 下面给出了几个例子: ### browser diff --git a/src/rules/no-underscore-dangle.md b/src/rules/no-underscore-dangle.md index a2eeca1..e7363eb 100644 --- a/src/rules/no-underscore-dangle.md +++ b/src/rules/no-underscore-dangle.md @@ -27,6 +27,7 @@ var _foo; var foo_; var __proto__ = {}; foo._bar(); +const [_foo, ..._bar] = list; ``` ::: @@ -53,6 +54,7 @@ const foo = (_bar) => {}; 此规则选项为对象: +<<<<<<< HEAD * `"allow"` 允许指定的标识符有悬空的下划线 * `"allowAfterThis": false`(默认值)不允许在 `this` 对象的成员中使用悬空的下划线 * `"allowAfterSuper": false`(默认值)不允许在 `super` 对象的成员中使用悬空的下划线 @@ -62,6 +64,25 @@ const foo = (_bar) => {}; * `"allowInArrayDestructuring": true`(默认值)允许在由数组解构分配的变量名称中使用悬空的下划线 * `"allowInObjectDestructuring": true`(默认值)允许在对象解构分配的变量名称中使用悬空的下划线 * `"allowFunctionParams": true`(默认值)允许在函数参数名称中使用悬空的下划线 +||||||| parent of c89c5dc (docs: add options to check destructuring in no-underscore-dangle) +* `"allow"` 允许指定的标识符有悬空的下划线。 +* `"allowAfterThis": false`(默认值)不允许在 `this` 对象的成员中使用悬空的下划线。 +* `"allowAfterSuper": false`(默认值)不允许在 `super` 对象的成员中使用悬空的下划线。 +* `"allowAfterThisConstructor": false`(默认值)不允许在 `this.constructor` 对象的成员中使用悬空的下划线。 +* `"enforceInMethodNames": false`(默认值)允许在方法名称中使用悬空的下划线。 +* `"enforceInClassFields": false`(默认值)允许在 es2022 类字段名中使用悬空的下划线。 +* `"allowFunctionParams": true`(默认值)允许在函数参数名称中使用悬空的下划线。 +======= +* `"allow"` 允许指定的标识符有悬空的下划线 +* `"allowAfterThis": false`(默认值)不允许在 `this` 对象的成员中使用悬空的下划线 +* `"allowAfterSuper": false`(默认值)不允许在 `super` 对象的成员中使用悬空的下划线 +* `"allowAfterThisConstructor": false`(默认值)不允许在 `this.constructor` 对象的成员中使用悬空的下划线 +* `"enforceInMethodNames": false`(默认值)允许在方法名称中使用悬空的下划线 +* `"enforceInClassFields": false`(默认值)允许在 es2022 类字段名中使用悬空的下划线 +* `"allowInArrayDestructuring": true`(默认值)允许在由数组解构分配的变量名称中使用悬空的下划线 +* `"allowInObjectDestructuring": true`(默认值)允许在对象解构分配的变量名称中使用悬空的下划线 +* `"allowFunctionParams": true`(默认值)允许在函数参数名称中使用悬空的下划线 +>>>>>>> c89c5dc (docs: add options to check destructuring in no-underscore-dangle) ### allow @@ -224,6 +245,47 @@ const { foo, bar, _baz: baz } = collection; ::: +### allowInArrayDestructuring + +使用此规则与 `{ "allowInArrayDestructuring": false }` 选项的**错误**示例: + +::: incorrect + +```js +/*eslint no-underscore-dangle: ["error", { "allowInArrayDestructuring": false }]*/ +const [_foo, _bar] = list; +const [foo_, ..._bar] = list; +const [foo, [bar, _baz]] = list; +``` + +::: + +### allowInObjectDestructuring + +使用此规则与 `{ "allowInObjectDestructuring": false }` 选项的**错误**示例: + +::: incorrect + +```js +/*eslint no-underscore-dangle: ["error", { "allowInObjectDestructuring": false }]*/ +const { foo, bar: _bar } = collection; +const { foo, bar, _baz } = collection; +``` + +::: + +使用此规则与 `{ "allowInObjectDestructuring": false }` 选项的**正确**示例: + +::: correct + +```js +/*eslint no-underscore-dangle: ["error", { "allowInObjectDestructuring": false }]*/ +const { foo, bar, _baz: { a, b } } = collection; +const { foo, bar, _baz: baz } = collection; +``` + +::: + ### allowFunctionParams 使用此规则与 `{ "allowFunctionParams": false }` 选项的**错误**示例: diff --git a/src/rules/rest-spread-spacing.md b/src/rules/rest-spread-spacing.md index b056313..ec2a654 100644 --- a/src/rules/rest-spread-spacing.md +++ b/src/rules/rest-spread-spacing.md @@ -56,7 +56,7 @@ n; // -> { x: 1, y: 2, a: 3, b: 4 } } ``` -请阅读用户指南的[配置解析器选项](../user-guide/configuring#specifying-parser-options)部分以了解更多。 +请阅读用户指南的[配置解析器选项](../use/configure#specifying-parser-options)部分以了解更多。 ## 选项 diff --git a/src/rules/space-after-keywords.md b/src/rules/space-after-keywords.md index ad16bbd..8978187 100644 --- a/src/rules/space-after-keywords.md +++ b/src/rules/space-after-keywords.md @@ -7,7 +7,7 @@ title: space-after-keywords (移除)这条规则在 ESLint v2.0 中被**移除,被 [keyword-spacing](keyword-spacing)规则取代。 -(可修复)[命令行](../user-guide/command-line-interface#-fix) 上的 `--fix` 选项会自动修复此规则所报告的问题。 +(可修复)[命令行](../use/command-line-interface#-fix) 上的 `--fix` 选项会自动修复此规则所报告的问题。 一些风格指南会要求或不允许在某些关键词后面有空格。 diff --git a/src/rules/space-before-keywords.md b/src/rules/space-before-keywords.md index 196549d..24cdf65 100644 --- a/src/rules/space-before-keywords.md +++ b/src/rules/space-before-keywords.md @@ -13,7 +13,7 @@ related_rules: (已移除)此规则在 ESLint v2.0 中移除并被 [keyword-spacing](keyword-spacing) 所取代。 -(可修复)`--fix` 选项在[命令行](../user-guide/command-line-interface#--fix)上自动修复该规则报告的问题。 +(可修复)`--fix` 选项在[命令行](../use/command-line-interface#--fix)上自动修复该规则报告的问题。 关键词是 JavaScript 的语法元素,如 `function` 和 `if`。这些标识符对语言有特殊的意义,所以在代码编辑器中经常以不同的颜色出现。作为语言的一个重要部分,风格指南经常提到关键词周围应该使用的间距。例如,你可能有一个风格指南,说关键词前面应该总是有空格,这意味着 `if-else` 语句必须看起来像这样。 diff --git a/src/rules/space-return-throw-case.md b/src/rules/space-return-throw-case.md index 396691c..1b5b97e 100644 --- a/src/rules/space-return-throw-case.md +++ b/src/rules/space-return-throw-case.md @@ -7,7 +7,7 @@ title: space-return-throw-case (已移除)此规则在 ESLint v2.0 中移除并被 [keyword-spacing](keyword-spacing) 所取代。 -(可修复)`--fix` 选项在[命令行](../user-guide/command-line-interface#--fix)中自动修复该规则报告的问题。 +(可修复)`--fix` 选项在[命令行](../use/command-line-interface#--fix)中自动修复该规则报告的问题。 要求在 `return`、`throw` 和 `case` 后面有空格。 diff --git a/src/rules/strict.md b/src/rules/strict.md index 1331788..d3b658e 100644 --- a/src/rules/strict.md +++ b/src/rules/strict.md @@ -45,7 +45,7 @@ function foo2() { 这条规则要求或不允许严格模式指令。 -如果 ESLint 配置中指定了以下任何一个[解析器选项](../user-guide/configuring/language-options#specifying-parser-options),则无论哪个选项被指定,本规则都不允许严格模式指令。 +如果 ESLint 配置中指定了以下任何一个[解析器选项](../use/configure/language-options#specifying-parser-options),则无论哪个选项被指定,本规则都不允许严格模式指令。 * `"sourceType": "module"` 也就是说,文件是 **ECMAScript** 模块 * `"impliedStrict": true` 属性在 `ecmaFeatures` 对象中。 @@ -71,8 +71,8 @@ function foo2() { 如果 ESLint 认为一个文件是 **Node.js** 或 **CommonJS** 模块,因为配置中指定了以下任何一项,那么 `"safe"` 选项对应于 `"global"` 选项。 -* `node` 或 `commonjs` [环境](../user-guide/configuring/language-options#specifying-environments) -* [解析器选项](../user-guide/configuring/language-options#specifying-parser-options)的 `ecmaFeatures` 对象中的 `"globalReturn": true` 属性 +* `node` 或 `commonjs` [环境](../use/configure/language-options#specifying-environments) +* [解析器选项](../use/configure/language-options#specifying-parser-options)的 `ecmaFeatures` 对象中的 `"globalReturn": true` 属性 否则 `"safe"` 选项将与 `"function"` 选项相对应。注意,如果在配置中明确指定了 `"globalReturn": false`,那么 `"safe"` 选项将对应于`"function"` 选项,而不考虑指定环境。 @@ -338,4 +338,4 @@ function foo() { ## 何时不用 -在一个既有严格代码又有非严格代码的代码库中,要么关闭这个规则,要么在必要时[选择性地禁用它](../user-guide/configuring/rules#disabling-rules)。例如,引用 `arguments.callee` 的函数在严格模式下是无效的。MDN 上有一份[严格模式差异的完整列表](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode#Differences_from_non-strict_to_strict)。 +在一个既有严格代码又有非严格代码的代码库中,要么关闭这个规则,要么在必要时[选择性地禁用它](../use/configure/rules#disabling-rules)。例如,引用 `arguments.callee` 的函数在严格模式下是无效的。MDN 上有一份[严格模式差异的完整列表](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode#Differences_from_non-strict_to_strict)。 diff --git a/src/user-guide/command-line-interface.md b/src/use/command-line-interface.md similarity index 97% rename from src/user-guide/command-line-interface.md rename to src/use/command-line-interface.md index fe19708..670ec72 100644 --- a/src/user-guide/command-line-interface.md +++ b/src/use/command-line-interface.md @@ -132,7 +132,7 @@ npx eslint --no-eslintrc file.js #### `-c`, `--config` -此项用于在原有的 ESLint 配置上额外新增配置(详见 [ESLint 配置](configuring/))。 +此项用于在原有的 ESLint 配置上额外新增配置(详见 [ESLint 配置](configure/))。 * **参数类型**:字符串。文件路径。 * **多个参数**:不支持 @@ -154,7 +154,7 @@ npx eslint -c ~/my-eslint.json file.js * **参数类型**:字符串。某一可用环境。 * **多个参数**:支持 -关于各环境所定义的全局变量的细节可参见[指定环境](configuring/language-options#指定环境)文档。此项仅用于启用环境,它不能用于禁用其他配置文件中设置的环境。若要指定多个环境,请用逗号隔开或复用该项。 +关于各环境所定义的全局变量的细节可参见[指定环境](configure/language-options#指定环境)文档。此项仅用于启用环境,它不能用于禁用其他配置文件中设置的环境。若要指定多个环境,请用逗号隔开或复用该项。 ##### `--env` 示例 @@ -387,7 +387,7 @@ npx eslint --fix --fix-type suggestion,layout . * **多个参数**:不支持 * **默认值**:ESLint 默认在当前工作目录下寻找 `.eslintignore`。 -**注意**:在使用[扁平配置](./configuring/configuration-files-new)(`eslint.config.js`)时,不支持使用 `--ignore-path`。 +**注意**:在使用[扁平配置](./configure/configuration-files-new)(`eslint.config.js`)时,不支持使用 `--ignore-path`。 ##### `--ignore-path` 示例 @@ -412,7 +412,7 @@ npx eslint --no-ignore file.js 此选项用于指定要忽略文件的匹配模式(在 `.eslintignore` 的基础上)。 -* **参数类型**:字符串。支持的语法与 [`.eslintignore` 文件](configuring/ignoring-code#the-eslintignore-file)相同,它使用的模式与 [`.gitignore` 规范](https://git-scm.com/docs/gitignore)相同。你应该加上引号以避免 shell 对 glob 模式的解释。 +* **参数类型**:字符串。支持的语法与 [`.eslintignore` 文件](configure/ignore#the-eslintignore-file)相同,它使用的模式与 [`.gitignore` 规范](https://git-scm.com/docs/gitignore)相同。你应该加上引号以避免 shell 对 glob 模式的解释。 * **多个参数**:支持 ##### `--ignore-pattern` 示例 @@ -775,7 +775,7 @@ temp.js **/vendor/*.js ``` -你可以在[忽略代码](configuring/ignoring-code)中找到更加详细的 ESLint 默认忽略的匹配模式和目录。 +你可以在[忽略代码](configure/ignore)中找到更加详细的 ESLint 默认忽略的匹配模式和目录。 ## 退出码 diff --git a/src/user-guide/configuring/configuration-files-new.md b/src/use/configure/configuration-files-new.md similarity index 100% rename from src/user-guide/configuring/configuration-files-new.md rename to src/use/configure/configuration-files-new.md diff --git a/src/user-guide/configuring/configuration-files.md b/src/use/configure/configuration-files.md similarity index 97% rename from src/user-guide/configuring/configuration-files.md rename to src/use/configure/configuration-files.md index 9c07ef0..1fb2f71 100644 --- a/src/user-guide/configuring/configuration-files.md +++ b/src/use/configure/configuration-files.md @@ -233,7 +233,7 @@ ESLint 递归地扩展配置,所以基本配置也可以使用 `extends` 属 ### 使用可共享配置包 -[可共享配置](../../developer-guide/shareable-configs) 是导出配置对象的一个 npm 包。当你在项目根目录下安装了这个包后,ESLint 就可以使用它了。 +[可共享配置](../../extend/shareable-configs) 是导出配置对象的一个 npm 包。当你在项目根目录下安装了这个包后,ESLint 就可以使用它了。 `extends` 属性值可以省略包名的 `eslint-config-`前缀。 @@ -280,7 +280,7 @@ module.exports = { ### 使用插件配置 -[插件](../../developer-guide/working-with-plugins)是一个可以为 ESLint 添加各种扩展功能的 npm 包。一个插件可以执行许多功能,包括但不限于添加新的规则和导出[可共享的配置](../../developer-guide/working-with-plugins#configs-in-plugins)。请确保该包已经安装在 ESLint 能够需要它的目录中。 +[插件](../../extend/plugins)是一个可以为 ESLint 添加各种扩展功能的 npm 包。一个插件可以执行许多功能,包括但不限于添加新的规则和导出[可共享的配置](../../extend/plugins#configs-in-plugins)。请确保该包已经安装在 ESLint 能够需要它的目录中。 `plugins` [属性值](./plugins#配置插件)可以省略包名中的 `eslint-plugin-` 前缀。 diff --git a/src/user-guide/configuring/ignoring-code.md b/src/use/configure/ignore.md similarity index 99% rename from src/user-guide/configuring/ignoring-code.md rename to src/use/configure/ignore.md index 74e156a..9e90bdf 100644 --- a/src/user-guide/configuring/ignoring-code.md +++ b/src/use/configure/ignore.md @@ -17,7 +17,7 @@ eleventyNavigation: ## 配置文件中的 `ignorePatterns` -你可以在你的配置文件中使用 `ignorePatterns` 来告诉 ESLint 忽略特定的文件和目录。`ignorePatterns` 模式遵循与 `.eslintignore` 相同的规则。参见[`.eslintignore` 文档](./ignoring-code#the-eslintignore-file)了解更多内容。 +你可以在你的配置文件中使用 `ignorePatterns` 来告诉 ESLint 忽略特定的文件和目录。`ignorePatterns` 模式遵循与 `.eslintignore` 相同的规则。参见[`.eslintignore` 文档](#eslintignore-文件)了解更多内容。 ```json { diff --git a/src/user-guide/configuring/index.md b/src/use/configure/index.md similarity index 86% rename from src/user-guide/configuring/index.md rename to src/use/configure/index.md index 49efae1..b80a02c 100644 --- a/src/user-guide/configuring/index.md +++ b/src/use/configure/index.md @@ -51,10 +51,10 @@ eleventyNavigation: * [指定处理器](./plugins#指定处理器) * [指定解析器](./plugins#指定解析器) -[**忽略代码**](ignoring-code) +[**忽略代码**](ignore) -* [配置文件中的 `ignorePatterns`](./ignoring-code#配置文件中的-ignorepatterns) -* [`.eslintignore` 文件](./ignoring-code#eslintignore-文件) -* [使用替代文件](./ignoring-code#使用替代文件) -* [package.json 中的 eslintIgnore](./ignoring-code#packagejson-中的-eslintignore)) -* [忽略文件警告](./ignoring-code#忽略文件警告) +* [配置文件中的 `ignorePatterns`](./ignore#配置文件中的-ignorepatterns) +* [`.eslintignore` 文件](./ignore#eslintignore-文件) +* [使用替代文件](./ignore#使用替代文件) +* [package.json 中的 eslintIgnore](./ignore#packagejson-中的-eslintignore)) +* [忽略文件警告](./ignore#忽略文件警告) diff --git a/src/user-guide/configuring/language-options.md b/src/use/configure/language-options.md similarity index 100% rename from src/user-guide/configuring/language-options.md rename to src/use/configure/language-options.md diff --git a/src/user-guide/configuring/plugins.md b/src/use/configure/plugins.md similarity index 98% rename from src/user-guide/configuring/plugins.md rename to src/use/configure/plugins.md index 40a5ed6..1f9f8e9 100644 --- a/src/user-guide/configuring/plugins.md +++ b/src/use/configure/plugins.md @@ -22,7 +22,7 @@ eleventyNavigation: 默认情况下,ESLint 使用 [Espree](https://github.com/eslint/espree) 作为其解析器。你可以选择在你的配置文件中指定使用一个不同的解析器,只要该解析器满足以下要求。 1. 它必须是一个可以从使用解析器的配置文件中加载的 Node 模块。通常情况下,这意味着你应该使用 npm 单独安装解析器包。 -1. 它必须符合[解析器接口](../../developer-guide/working-with-custom-parsers)。 +1. 它必须符合[解析器接口](../../extend/custom-parsers)。 请注意,即使有这些兼容性,也不能保证外部解析器能与 ESLint 正确工作,ESLint 也不会修复与其他解析器不兼容的漏洞。 diff --git a/src/user-guide/configuring/rules.md b/src/use/configure/rules.md similarity index 100% rename from src/user-guide/configuring/rules.md rename to src/use/configure/rules.md diff --git a/src/user-guide/core-concepts.md b/src/use/core-concepts.md similarity index 93% rename from src/user-guide/core-concepts.md rename to src/use/core-concepts.md index a0bed90..d4126e1 100644 --- a/src/user-guide/core-concepts.md +++ b/src/use/core-concepts.md @@ -27,7 +27,7 @@ ESLint 包括数百个可以使用的内置规则。此外你也可以创建自 ESLint 配置文件是指项目中存储 ESLint 配置的地方。可以包括内置规则、想要强制执行的内容、具有自定义规则的插件、可共享的配置,你希望规则适用于哪些文件等等。 -更多信息请参见[配置文件](./configuring/configuration-files)。 +更多信息请参见[配置文件](./configure/configuration-files)。 ## 可共享配置 @@ -35,7 +35,7 @@ ESLint 配置文件是指项目中存储 ESLint 配置的地方。可以包括 通常可共享配置会被用于通过 ESLint 内置规则强制执行风格指南。比如可共享配置 [eslint-config-airbnb-base](https://www.npmjs.com/package/eslint-config-airbnb-base) 就实现了受欢迎的 Airbnb JavaScript 风格指南。 -更多信息请参见[使用可共享配置包](./configuring/configuration-files#使用可共享配置包)。 +更多信息请参见[使用可共享配置包](./configure/configuration-files#使用可共享配置包)。 ## 插件 @@ -43,7 +43,7 @@ ESLint 插件是一个包含 ESLint 规则、配置、解析器和环境变量 插件的流行用例就是强制执行框架规定的最佳实践。比如 [@angular-eslint/eslint-plugin](https://www.npmjs.com/package/@angular-eslint/eslint-plugin) 包括了使用 Angular 框架的最佳实践。 -更多信息请参见[配置插件](./configuring/plugins)。 +更多信息请参见[配置插件](./configure/plugins)。 ## 解析器 @@ -79,4 +79,4 @@ ESLint 的 Node.js API 让你可以在 Node.js 代码中以编程的方式使用 除非你要以某种方式扩展 ESLint,否则你就应该使用命令行。 -更多信息请参见[命令行界面](./command-line-interface)和 [Node.js API](../developer-guide/nodejs-api)。 +更多信息请参见[命令行界面](./command-line-interface)和 [Node.js API](../integrate/nodejs-api)。 diff --git a/src/user-guide/formatters/index.md b/src/use/formatters/index.md similarity index 99% rename from src/user-guide/formatters/index.md rename to src/use/formatters/index.md index 52411f2..e5bf646 100644 --- a/src/user-guide/formatters/index.md +++ b/src/use/formatters/index.md @@ -116,7 +116,7 @@ npx eslint --format fullOfProblems.js 输出 JSON 序列化 结果。`json-with-metadata` 提供与 [`json`](#json) 格式化相同的提示结果,并提供关于应用规则的额外元数据。判断结果包含在 `results` 属性中,规则元数据包含在 `metadata` 属性中。 -另外,你可以使用 [ESLint Node.js API](../../developer-guide/nodejs-api) 来编程使用 ESLint。 +另外,你可以使用 [ESLint Node.js API](../../integrate/nodejs-api) 来编程使用 ESLint。 输出示例: @@ -128,7 +128,7 @@ npx eslint --format fullOfProblems.js 输出 JSON 序列化结果。`json` 格式化工具在你想以编程方式处理命令行的提示结果时很有用。 -另外,你可以使用 [ESLint Node.js API](../../developer-guide/nodejs-api) 来编程使用 ESLint。 +另外,你可以使用 [ESLint Node.js API](../../integrate/nodejs-api) 来编程使用 ESLint。 输出示例: diff --git a/src/user-guide/getting-started.md b/src/use/getting-started.md similarity index 56% rename from src/user-guide/getting-started.md rename to src/use/getting-started.md index 96bf1ad..68b8ec4 100644 --- a/src/user-guide/getting-started.md +++ b/src/use/getting-started.md @@ -8,15 +8,15 @@ eleventyNavigation: --- -ESLint 是一个根据方案识别并报告 ECMAScript/JavaScript 代码问题的工具,其目的是使代码风格更加一致并避免错误。 +ESLint 是一个根据方案识别并报告 ECMAScript/JavaScript 代码问题的工具,其目的是使代码风格更加一致并避免错误。在很多地方它都与 JSLint 和 JSHint 类似,除了: -ESLint 是完全插件化的。每一条规则都是一个插件,你可以在运行时添加更多的插件。你也可以添加社区插件、配置和解析器来扩展 ESLint 的功能。 +* ESLint 使用 [Espree](https://github.com/eslint/espree) 对 JavaScript 进行解析。 +* ESLint 在代码中使用 AST 评估方案。 +* ESLint 完全是插件式的,每个规则都是一个插件,你可以在运行时中添加更多插件。 -## 使用前提 +## 安装并使用 -要使用 ESLint,你必须使用内置 SSL 支持的 [Node.js](https://nodejs.org/en/) 版本(`^12.22.0`、`^14.17.0` 或 `>=16.0.0`),如果你使用的是官方 Node.js 发行版,那么已经内置了 SSL 支持。 - -## 快速开始 +前提条件:内置 SSL 支持的 [Node.js](https://nodejs.org/en/) 版本(`^12.22.0`、`^14.17.0` 或 `>=16.0.0`),如果你使用的是官方 Node.js 发行版,那么已经内置了 SSL 支持。 你可以使用该命令安装并配置 ESLint: @@ -28,15 +28,15 @@ npm init @eslint/config ```shell # 使用 `eslint-config-semistandard` 可共享配置 -# npm 7+ +# npm 6.x +npm init @eslint/config --config semistandard +# ⚠️ npm 7+ 需要使用额外的双杠: npm init @eslint/config -- --config semistandard # 或(可以省略 `eslint-config` 前缀) npm init @eslint/config -- --config eslint-config-semistandard -# ⚠️ npm 6.x 无需使用额外的双杠: -npm init @eslint/config --config semistandard ``` -`--config` 标志也支持传递数组: +`--config` 标志也支持传递数组 ```shell npm init @eslint/config -- --config semistandard,standard @@ -56,6 +56,8 @@ npx eslint yourfile.js yarn run eslint yourfile.js ``` +也可以全局安装 ESLint 而不仅限于本地(使用 `npm install eslint --global`)。但并不推荐这样做,因为无论使用哪种安装方式,你都需要在本地安装插件和可共享配置。 + ## 配置 **注意**:如果你正在使用 1.0.0 以前的版本,请阅读[迁移指南](migrating-to-1.0.0)。 @@ -77,7 +79,7 @@ yarn run eslint yourfile.js * `"warn"` 或 `1` - 启用并警告(不影响现有代码) * `"error"` 或 `2` - 启用并报错(错误代码 1) -你可以调节这三档错误级别以精准控制 ESLint 规则实施方式(更多配置项和细节,参见[配置文档](configuring/))。 +你可以调节这三档错误级别以精准控制 ESLint 规则实施方式(更多配置项和细节,参见[配置文档](configure/))。 你的 `.eslintrc.{js,yml,json}` 配置文件也会包括这一行: @@ -87,6 +89,9 @@ yarn run eslint yourfile.js } ``` +<<<<<<< HEAD +这一行将启用[所有标记为“推荐”的规则](../rules/)。另外,你也可以通过在 [npmjs.com](https://www.npmjs.com/search?q=eslint-config) 上搜索“eslint-config”并使用别人创建的配置。在没有扩展别人的可共享配置或在配置中明确启用规则时,ESLint 不会限制你的代码。 +||||||| parent of 3ffc6a1 (docs: IA Update page URL move) 这一行将启用[所有标记为“推荐”的规则](../rules)。另外,你也可以通过在 [npmjs.com](https://www.npmjs.com/search?q=eslint-config) 上搜索“eslint-config”并使用别人创建的配置。在没有使用别人的可共享配置或在配置中明确启用规则时,ESLint 不会检查你的代码。 ## 全局安装 @@ -136,13 +141,64 @@ yarn run eslint yourfile.js ``` 更多关于可用命令行选项的信息,参见[命令行文档](./command-line-interface)。 +======= +这一行将启用[所有标记为“推荐”的规则](../rules)。另外,你也可以通过在 [npmjs.com](https://www.npmjs.com/search?q=eslint-config) 上搜索“eslint-config”并使用别人创建的配置。在没有使用别人的可共享配置或在配置中明确启用规则时,ESLint 不会检查你的代码。 + +## 全局安装 + +也可以全局安装 ESLint 而不仅限于羡慕本地(使用 `npm install eslint --global`)。但并不推荐这样做,因为即使全局安装 ESLint,你仍需要在本地安装插件和可共享配置。 + +## 手动设置 + +你也可以在项目中手动设置 ESLint. + +在开始前你必须确保存在 `package.json` 文件。如果不存在,请优先运行 `npm init` 或 `yarn init` 来创建此文件。 + +1. 在项目中安装 ESLint 包: + + ```shell + npm install --save-dev eslint + ``` + +1. 添加任一[支持的配置文件格式](./configure/configuration-files#配置文件格式)的 `.eslintrc` 文件。 + + ```shell + # 创建 JavaScript 配置文件 + touch .eslintrc.js + ``` + +1. 在 `.eslintrc` 文件中添加配置。阅读[配置 ESLint 文档](configure/)学习如何添加规则、环境、自定义配置、插件以及其他内容。 + + ```js + // .eslintrc.js 示例 + module.exports = { + "env": { + "browser": true, + "es2021": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + } + ``` + +1. 使用 ESLint 命令行检查代码: + + ```shell + npx eslint project-dir/ file1.js + ``` + + 更多关于可用命令行选项的信息,参见[命令行文档](./command-line-interface)。 +>>>>>>> 3ffc6a1 (docs: IA Update page URL move) --- ## 下一步 -* 了解 ESLint [可选配置](configuring/)。 +* 了解 ESLint [可选配置](configure/)。 * 熟悉一下[命令行选项](command-line-interface)。 * 将 [ESLint 集成](integrations)带到诸如编辑器、构建系统以及其他工具中。 -* 找不到合适的规则?创造属于自己的[自定义规则](../developer-guide/working-with-rules)。 -* 通过[贡献](../developer-guide/contributing/)让 ESLint 变得更棒。 +* 找不到合适的规则?创造属于自己的[自定义规则](../extend/custom-rules)。 +* 通过[贡献](../contribute//)让 ESLint 变得更棒。 diff --git a/src/user-guide/index.md b/src/use/index.md similarity index 93% rename from src/user-guide/index.md rename to src/use/index.md index 68786ba..74a2eb6 100644 --- a/src/user-guide/index.md +++ b/src/use/index.md @@ -6,7 +6,7 @@ eleventyNavigation: order: 1 --- -本指南针对想要使用 ESLint 的终端用户。如果你正在寻找扩展 ESLint 或使用 ESLint 源码的方式,请查看[开发指南](../developer-guide/) +本指南针对想要使用 ESLint 的终端用户。如果你正在寻找扩展 ESLint 或使用 ESLint 源码的方式,请查看[开发指南](../extend/) ## [入门](getting-started) @@ -16,7 +16,7 @@ eleventyNavigation: ESLint 有许多可以根据项目需求进行配置并微调的规则。本章节详细列出了所有规则并指向每一规则的相关文档。 -## [配置](configuring/) +## [配置](configure/) 当 ESLint 成功运行后,你可能会想要调整配置以更好地适应你的项目。本章节一一解释了所有不同的 ESLint 配置方式。 @@ -43,4 +43,4 @@ ESLint 团队致力于使升级过程尽可能无痛且容易。本章节概述 * [migrating-to-5.0.0](migrating-to-5.0.0) * [migrating-to-6.0.0](migrating-to-6.0.0) * [migrating-to-7.0.0](migrating-to-7.0.0) -* [migrating-to-8.0.0](migrating-to-8.0.0) +* [migrate-to-8.0.0](migrate-to-8.0.0) diff --git a/src/user-guide/integrations.md b/src/use/integrations.md similarity index 98% rename from src/user-guide/integrations.md rename to src/use/integrations.md index 2694c2e..dd1f812 100644 --- a/src/user-guide/integrations.md +++ b/src/use/integrations.md @@ -10,7 +10,7 @@ eleventyNavigation: 此页面包括了与 ESLint 集成的社区项目。列在此页的项目并不由 ESLint 所维护。 -如果你想要推荐项目将其加入此也,请[提交拉去请求](../developer-guide/contributing/pull-requests). +如果你想要推荐项目将其加入此也,请[提交拉去请求](../contribute/pull-requests). ## 编辑器 diff --git a/src/user-guide/migrating-to-8.0.0.md b/src/use/migrate-to-8.0.0.md similarity index 95% rename from src/user-guide/migrating-to-8.0.0.md rename to src/use/migrate-to-8.0.0.md index da856b3..773bc27 100644 --- a/src/user-guide/migrating-to-8.0.0.md +++ b/src/use/migrate-to-8.0.0.md @@ -120,7 +120,7 @@ ESLint v8.0.0 从核心中移除了 `codeframe` 和 `table` 格式化工具。ES ## 规则需要使用 `meta.hasSuggestions` 以提供建议 -在 ESLint v7.0.0 中,规则[提供建议](../developer-guide/working-with-rules#providing-suggestions)不需要让 ESLint 知道。在 v8.0.0 中,规则提供建议需要将 `meta.hasSuggestions` 设置为 `true`。这会告诉 ESLint 规则打算提供建议,如果没有这个属性,任何试图提供建议的行为都会导致错误。 +在 ESLint v7.0.0 中,规则[提供建议](../extend/custom-rules#providing-suggestions)不需要让 ESLint 知道。在 v8.0.0 中,规则提供建议需要将 `meta.hasSuggestions` 设置为 `true`。这会告诉 ESLint 规则打算提供建议,如果没有这个属性,任何试图提供建议的行为都会导致错误。 **解决方案**:如果你的规则提供了建议,请像这样添加 `meta.hasSuggestions` 对象: @@ -168,7 +168,7 @@ module.exports = { [eslint-plugin/prefer-object-rule](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/prefer-object-rule.md)规则可以自动修复并强制使用对象格式重写已废弃的函数格式规则。 -参见[规则文档](../developer-guide/working-with-rules)获取更多关于编写规则的信息。 +参见[规则文档](../extend/custom-rules)获取更多关于编写规则的信息。 **相关议题**:[#13349](https://github.com/eslint/eslint/issues/13349) @@ -178,7 +178,7 @@ module.exports = { 将在 v9.0.0 中移除 `SourceCode#getComments()` 方法。 -**解决方案**:如果你的规则使用了 `SourceCode#getComments()`,请改用 [`SourceCode#getCommentsBefore()`、`SourceCode#getCommentsAfter()` 或 `SourceCode#getCommentsInside()`](../developer-guide/working-with-rules#sourcecodegetcommentsbefore-sourcecodegetcommentsafter-and-sourcecodegetcommentsinside)。 +**解决方案**:如果你的规则使用了 `SourceCode#getComments()`,请改用 [`SourceCode#getCommentsBefore()`、`SourceCode#getCommentsAfter()` 或 `SourceCode#getCommentsInside()`](../extend/custom-rules#sourcecodegetcommentsbefore-sourcecodegetcommentsafter-and-sourcecodegetcommentsinside)。 **相关议题**:[#14744](https://github.com/eslint/eslint/issues/14744) @@ -233,7 +233,7 @@ if (propertyNode.key === propertyNode.value) { ## 移除 `CLIEngine` 类 -移除 `CLIEngine` 类,以 [`ESLint` 类](../developer-guide/nodejs-api#eslint-class)替换之。 +移除 `CLIEngine` 类,以 [`ESLint` 类](../integrate/nodejs-api#eslint-class)替换之。 **解决方案**:果你正在使用 `CLIEngine`,更新代码以使用新的 `ESLint` 类。下表列出了 `CLIEngine` 方法对应的 `ESLint` 方法: diff --git a/src/user-guide/migrating-from-jscs.md b/src/use/migrating-from-jscs.md similarity index 95% rename from src/user-guide/migrating-from-jscs.md rename to src/use/migrating-from-jscs.md index 7fcd136..530e65e 100644 --- a/src/user-guide/migrating-from-jscs.md +++ b/src/use/migrating-from-jscs.md @@ -10,7 +10,7 @@ title: 迁移自 JSCS 在开始 ESLint 迁移工作前,你可以阅读下方所列出的 ESLint 所使用的术语及其 JSCS 所用术语见的关系,这有助于迁移工作顺利进行。 * **配置文件** - 在 JSCS 中,配置文件指的是 `.jscsrc`、`.jscsrc.json`、`.jscsrc.yaml` 或 `.jscsrs.js`。在 ESLint 中,配置文件指的是 `.eslintrc.json`、`.eslintrc.yml`、`.eslintrc.yaml` 或 `.eslintrc.js`(还有已废弃的 `.eslintrc` 文件格式)。 -* **预设** - 在 JSCS 中, 直接提供了许多预定义配置的。ESLint 只提供了一个无关风格的预定义配置(`eslint:recommended`)。不过 ESLint 支持[可共享配置](../developer-guide/shareable-configs)。可共享的配置是指人们自行发布到 npm 的配置,几乎所有的 JSCS 预设都有与之对应的可共享配置(见下文“转换预设”部分)。此外,配置文件中的 `preset` 选项等同于 ESLint 的 `extends` 选项。 +* **预设** - 在 JSCS 中, 直接提供了许多预定义配置的。ESLint 只提供了一个无关风格的预定义配置(`eslint:recommended`)。不过 ESLint 支持[可共享配置](../extend/shareable-configs)。可共享的配置是指人们自行发布到 npm 的配置,几乎所有的 JSCS 预设都有与之对应的可共享配置(见下文“转换预设”部分)。此外,配置文件中的 `preset` 选项等同于 ESLint 的 `extends` 选项。 ## 使用 Polyjuice 转换配置文件 diff --git a/src/user-guide/migrating-to-1.0.0.md b/src/use/migrating-to-1.0.0.md similarity index 100% rename from src/user-guide/migrating-to-1.0.0.md rename to src/use/migrating-to-1.0.0.md diff --git a/src/user-guide/migrating-to-2.0.0.md b/src/use/migrating-to-2.0.0.md similarity index 100% rename from src/user-guide/migrating-to-2.0.0.md rename to src/use/migrating-to-2.0.0.md diff --git a/src/user-guide/migrating-to-3.0.0.md b/src/use/migrating-to-3.0.0.md similarity index 100% rename from src/user-guide/migrating-to-3.0.0.md rename to src/use/migrating-to-3.0.0.md diff --git a/src/user-guide/migrating-to-4.0.0.md b/src/use/migrating-to-4.0.0.md similarity index 99% rename from src/user-guide/migrating-to-4.0.0.md rename to src/use/migrating-to-4.0.0.md index 2fbeb84..d0d8656 100644 --- a/src/user-guide/migrating-to-4.0.0.md +++ b/src/use/migrating-to-4.0.0.md @@ -35,7 +35,7 @@ ESLint v4.0.0 是第四个主要发行版。此版本有几个破坏性改变, ## `eslint:recommended` 更改 -[`eslint:recommended`](../user-guide/configuring#using-eslintrecommended) 配置新增了两个规则: +[`eslint:recommended`](../use/configure#using-eslintrecommended) 配置新增了两个规则: * [`no-compare-neg-zero`](../rules/no-compare-neg-zero) 不允许与 `-0` 比较 * [`no-useless-escape`](../rules/no-useless-escape) 不允许字符串和正则表达式中出现无用的转义字符 diff --git a/src/user-guide/migrating-to-5.0.0.md b/src/use/migrating-to-5.0.0.md similarity index 95% rename from src/user-guide/migrating-to-5.0.0.md rename to src/use/migrating-to-5.0.0.md index 24a9389..fa27b74 100644 --- a/src/user-guide/migrating-to-5.0.0.md +++ b/src/use/migrating-to-5.0.0.md @@ -13,11 +13,11 @@ ESLint v5.0.0 是第五个主要发行版。此版本有几个破坏性改变, 1. [`eslint:recommended` 添加了新规则](#eslint-recommended-changes) 1. [废弃 `experimentalObjectRestSpread` 选项](#experimental-object-rest-spread) 1. [使用命令行检查不存在的文件将导致致命错误](#nonexistent-files) -2. [修改部分规则的默认选项](#rule-default-changes) -3. [移除 `node`、`browser` 和 `jest` 环境中废弃的全局变量](#deprecated-globals) -4. [现在将对空文件进行检查](#empty-files) -5. [现在可以解析配置中的范围包插件了](#scoped-plugins) -6. [多行 `eslint-disable-line` 指令将视作问题](#multiline-directives) +1. [修改部分规则的默认选项](#rule-default-changes) +1. [移除 `node`、`browser` 和 `jest` 环境中废弃的全局变量](#deprecated-globals) +1. [现在将对空文件进行检查](#empty-files) +1. [现在可以解析配置中的范围包插件了](#scoped-plugins) +1. [多行 `eslint-disable-line` 指令将视作问题](#multiline-directives) ## 面向插件/自定义规则开发者的破坏性变更 @@ -49,7 +49,7 @@ Node.js 3 在 2018 年 4 月到达了生命的终点,将不再获得安全更 ## 修改 `eslint:recommended` -[`eslint:recommended`](../user-guide/configuring#using-eslintrecommended) 配置添加了两个新规则: +[`eslint:recommended`](../use/configure#using-eslintrecommended) 配置添加了两个新规则: * [`for-direction`](../rules/for-direction) 执行 `for` 循环更新子句,计数器将逐渐增大。 * [`getter-return`](../rules/getter-return) 强制要求属性获取器中有 `return` 语句。 @@ -112,7 +112,7 @@ ESLint v5 在满足以下任一条件时将报告致命错误: * 在命令行中提供的文件不存在 * 命令行中提供的 glob 或文件夹与任何可检查文件不匹配。 -注意,这也会影响到 [`CLIEngine.executeOnFiles()`](../developer-guide/nodejs-api#cliengineexecuteonfiles) API。 +注意,这也会影响到 [`CLIEngine.executeOnFiles()`](../integrate/nodejs-api#cliengineexecuteonfiles) API。 **解决方案**:如果你在升级到 ESLint v5 后遇到关于丢失文件的错误,你可能要仔细检查你提供给 ESLint 的路径中是否有错字。为了使错误消失,你可以简单地从命令行上提供给 ESLint 的参数列表中删除给定的文件或 globs。 @@ -157,7 +157,7 @@ ESLint v4 在对只包含空格的文件进行检查时有一个特殊的行为 ESLint v5 对待纯白文件的方式与所有其他文件相同:它解析它们,并根据情况对它们运行启用的规则。如果你用了自定义规则以报告空文件错误,这可能会导致额外的提示问题。 -**解决方法**:如果你的项目中有空文件,且不想对其检查,可以考虑把它添加到 [`.eslintignore` 文件](configuring#ignoring-files-and-directories)中。 +**解决方法**:如果你的项目中有空文件,且不想对其检查,可以考虑把它添加到 [`.eslintignore` 文件](configure/ignore)中。 如果你有一个自定义规则,你应该确保它适当地处理空文件(在大多数情况下,没有必要进行修改)。 @@ -220,11 +220,11 @@ alert('foo'); /* eslint-disable-line 此外,`context.getScope()` 返回了不合适的 `CatchClause`(ES5)、`ForStatement`(≧ES2015)、`ForInStatement`(≧ES2015)、`ForOfStatement` 和 `WithStatement` 节点父范围。 -在 ESLint v5 中,无论 `parserOptions.ecmaVersion` 如何,`context.getScope()` 方法都有同样的行为,并返回适当的范围。参见[文档](./developer-guide/working-with-rules#contextgetscope)以了解更多关于返回作用域的细节。 +在 ESLint v5 中,无论 `parserOptions.ecmaVersion` 如何,`context.getScope()` 方法都有同样的行为,并返回适当的范围。参见[文档](./extend/custom-rules#contextgetscope)以了解更多关于返回作用域的细节。 **解决方案**:如果你的自定义规则,在节点处理程序中使用了 `context.getScope()` 方法,你可能需要更新它以说明修改后的范围信息。 -## 删除规则上下文对象 `_linter ` 属性 +## 删除规则上下文对象 `_linter` 属性 以前,规则上下文对象有一个没有记录的 `_linter` 属性,在 ESLint 内部用来处理规则的报告。一些规则使用这个属性来实现规则本来不可能实现的功能。例如,一些插件使用规则中的 `_linter` 属性来监控其他规则的报告,目的是检查未使用的 `/* eslint-disable */` 指令注释。虽然这个功能对用户来说很有用,但它也可能给使用 ESLint 的项目带来稳定性问题。例如,插件中规则升级可能意外地导致另一个插件中的规则开始报错。 @@ -267,6 +267,6 @@ ESLint v5.0 中移除了 `_linter` 属性,所以不能再用这个功能实现 ## 现在不可枚举 `eslint.linter` 属性 -当使用 ESLint 的 Node.js API 时,现在不可以枚举 [`linter`](../developer-guide/nodejs-api#linter-1) 属性了。请注意,ESLint v4 弃用 `linter` 属性,请改用 [`Linter`](../developer-guide/nodejs-api#linter) 属性。 +当使用 ESLint 的 Node.js API 时,现在不可以枚举 [`linter`](../integrate/nodejs-api#linter-1) 属性了。请注意,ESLint v4 弃用 `linter` 属性,请改用 [`Linter`](../integrate/nodejs-api#linter) 属性。 **解决方案**:如果你依赖于枚举 `eslint` 对象的所有属性,可以使用类似 `Object.getOwnPropertyNames` 的东西来确保捕获非枚举的键。 diff --git a/src/user-guide/migrating-to-6.0.0.md b/src/use/migrating-to-6.0.0.md similarity index 98% rename from src/user-guide/migrating-to-6.0.0.md rename to src/use/migrating-to-6.0.0.md index eb33b97..636e5f3 100644 --- a/src/user-guide/migrating-to-6.0.0.md +++ b/src/use/migrating-to-6.0.0.md @@ -51,7 +51,7 @@ Node.js 6 在 2019 年 4 月到达了生命的终点,将不再获得安全更 ## 更新 `eslint:recommended` -[`eslint:recommended`](../user-guide/configuring#using-eslintrecommended) 配置添加了下列规则: +[`eslint:recommended`](../use/configure#using-eslintrecommended) 配置添加了下列规则: * [`no-async-promise-executor`](../rules/no-async-promise-executor) 不允许使用 `async` 函数作为 `Promise` 构造函数的参数,因为这通常是个漏洞。 * [`no-misleading-character-class`](../rules/no-misleading-character-class) 将报告正则表达式中与预期不符的字符类, @@ -195,7 +195,7 @@ The default options for the [`no-confusing-arrow`](../rules/no-confusing-arrow) 由于一个错误,在配置文件的 `overrides` 部分的 `files` 列表中的 glob 模式永远不会与 `dotfiles` 相匹配,这使得 overrides 无法应用于以点开始的文件。这个错误已经在 ESLint v6 中被修复。 -**解决方案**:如果你不希望 dotfiles 被覆盖匹配,可以考虑在 `overrides`部分添加类似 `excludedFiles: [".*"]` 的内容。更多细节见[文档](../user-guide/configuring#configuration-based-on-glob-patterns)。 +**解决方案**:如果你不希望 dotfiles 被覆盖匹配,可以考虑在 `overrides`部分添加类似 `excludedFiles: [".*"]` 的内容。更多细节见[文档](../use/configure#configuration-based-on-glob-patterns)。 **相关议题**:[eslint/eslint#11201](https://github.com/eslint/eslint/issues/11201) @@ -328,6 +328,6 @@ module.exports = { 在 ESLint v6 中,`Linter` 将不再执行任何文件系统操作,包括加载解析器。 -**解决方案**:如果你使用了 `Linter` 和自定义解析器,请改用 [`Linter#defineParser`](../developer-guide/nodejs-api#linterdefineparser),并在检查代码前明确定义解析器。 +**解决方案**:如果你使用了 `Linter` 和自定义解析器,请改用 [`Linter#defineParser`](../integrate/nodejs-api#linterdefineparser),并在检查代码前明确定义解析器。 **相关议题**:[eslint/rfcs#7](https://github.com/eslint/rfcs/pull/7) diff --git a/src/user-guide/migrating-to-7.0.0.md b/src/use/migrating-to-7.0.0.md similarity index 97% rename from src/user-guide/migrating-to-7.0.0.md rename to src/use/migrating-to-7.0.0.md index 7a6bb04..4e4cecd 100644 --- a/src/user-guide/migrating-to-7.0.0.md +++ b/src/use/migrating-to-7.0.0.md @@ -147,7 +147,7 @@ ESLint v7.0.0 也会忽略子目录的 `node_modules/*`,但不再忽略 `bower 废弃了核心中的十个 Node.js/CommonJS 规则,并移动到 [eslint-plugin-node](https://github.com/mysticatea/eslint-plugin-node) 插件中。 -**解决方案**:根据[我们的废弃策略](../user-guide/rule-deprecation),在可见的未来,这些废弃的规则仍将保留在核心中,并且仍就可用。但我们将不再更新或修复这些规则的错误。建议使用插件中获支持的相应规则来代替。 +**解决方案**:根据[我们的废弃策略](../use/rule-deprecation),在可见的未来,这些废弃的规则仍将保留在核心中,并且仍就可用。但我们将不再更新或修复这些规则的错误。建议使用插件中获支持的相应规则来代替。 | 废弃规则 | 替代品 | | :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | @@ -209,7 +209,7 @@ ESLint v7.0.0 也会忽略子目录的 `node_modules/*`,但不再忽略 `bower ## 废弃 `CLIEngine` 类 -废弃 [`CLIEngine` 类](../developer-guide/nodejs-api#cliengine),并用 [`ESLint` 类](../developer-guide/nodejs-api#eslint-class) 取代。 +废弃 [`CLIEngine` 类](../integrate/nodejs-api#cliengine),并用 [`ESLint` 类](../integrate/nodejs-api#eslint-class) 取代。 `CLIEngine` 类提供了同步 API,它阻碍了一些功能的实现,如并行刷新,在可共享的配置/解析器/插件/格式化工具中支持 ES 模块,并增加了可视化显示刷新运行进度的能力。新的 `ESLint` 类提供了一个异步的 API,ESLint 核心将继续使用。`CLIEngine` 在可预见的未来将保留在核心中,但在未来的主要版本中可能会被删除。 diff --git a/src/user-guide/rule-deprecation.md b/src/use/rule-deprecation.md similarity index 100% rename from src/user-guide/rule-deprecation.md rename to src/use/rule-deprecation.md