eslint常见问题3

Posted on 2024-05-17 18:18  生之不止,思之不息  阅读(36)  评论(0)    收藏  举报

这段话解释了在创建一个 Shareable Config(可共享配置)时,如何正确管理插件、解析器以及其他共享配置的依赖关系。具体来说,分两种情况处理依赖:插件依赖和解析器/其他共享配置依赖。下面我们逐句解析这段话的含义:

1. 插件依赖

原文

If your shareable config depends on a plugin, you should also specify it as a peerDependency (plugins will be loaded relative to the end user’s project, so the end user is required to install the plugins they need).

解释
如果你的 Shareable Config 依赖于一个插件,你应该将这个插件指定为 peerDependency。原因是插件会相对于最终用户的项目被加载,所以最终用户需要安装他们需要的插件。

具体说明:

  • 插件依赖于最终用户的项目:ESLint 插件(如 eslint-plugin-react)在执行时,是相对于使用 Shareable Config 的项目目录来加载的。这意味着如果插件不是最终用户项目的一部分,就无法正确加载。
  • 使用 peerDependency 声明插件依赖:通过将插件声明为 peerDependency,你告诉 npm 这个插件需要由最终用户安装,而不是作为 Shareable Config 自己的依赖安装。这样可以避免版本冲突,并确保插件在用户项目中正确加载。

示例
package.json 中声明 peerDependency

{
  "name": "eslint-config-my-config",
  "version": "1.0.0",
  "peerDependencies": {
    "eslint": "^7.0.0",
    "eslint-plugin-react": "^7.20.0"
  }
}

2. 自定义解析器和其他共享配置依赖

原文

However, if your shareable config depends on a custom parser or another shareable config, you can specify these packages as dependencies in the package.json.

解释
但是,如果你的 Shareable Config 依赖于一个自定义解析器或者另一个 Shareable Config,你可以将这些包指定为 dependencies

具体说明:

  • 自定义解析器和其他共享配置:自定义解析器(如 @babel/eslint-parser)和其他共享配置(如 eslint-config-airbnb)可以作为 Shareable Config 的直接依赖。这是因为这些包通常不会有加载路径的问题,且作为配置的一部分,它们应该由 Shareable Config 自动管理。
  • 使用 dependencies 声明依赖:通过将这些包声明为 dependencies,确保在安装 Shareable Config 时,这些依赖也会自动安装并可用。

示例
package.json 中声明 dependencies

{
  "name": "eslint-config-my-config",
  "version": "1.0.0",
  "dependencies": {
    "@babel/eslint-parser": "^7.13.0",
    "eslint-config-airbnb": "^18.2.1"
  }
}

综合示例

一个完整的 package.json 可能如下所示:

{
  "name": "eslint-config-my-config",
  "version": "1.0.0",
  "peerDependencies": {
    "eslint": "^7.0.0",
    "eslint-plugin-react": "^7.20.0"
  },
  "dependencies": {
    "@babel/eslint-parser": "^7.13.0",
    "eslint-config-airbnb": "^18.2.1"
  }
}

总结

这段文档说明了如何正确声明依赖,以确保 Shareable Config 在用户项目中能够正确加载和运行:

  • 插件应该作为 peerDependencies,以确保用户项目中安装并使用正确版本的插件。
  • 自定义解析器和其他共享配置可以作为 dependencies,以便在安装 Shareable Config 时自动安装这些依赖。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3