这段话解释了在创建一个 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 时自动安装这些依赖。
浙公网安备 33010602011771号