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