monorepo Yarn 工作区 - 共享 esLint 和 Prettier 配置
Posted
技术标签:
【中文标题】monorepo Yarn 工作区 - 共享 esLint 和 Prettier 配置【英文标题】:monorepo Yarn workspaces - shared esLint and Prettier configs 【发布时间】:2021-10-08 05:52:59 【问题描述】:某人如何在 Yarn 工作区(无 NPM、Lerna 等)之间共享 esLint/prettier 配置。
我试图保持相当高的水平,但我尝试为 esLint 配置创建一个单独的包并在项目包中使用它(通过安装和扩展它),但是我遇到了两个问题:
eslint command not found
:我是否必须将eslint
安装到每个使用 eslint-config 包的依赖项的项目包中?
我假设通过将eslint-config
安装到book/package.json
中,应该安装eslint
。我不确定为什么找不到 eslint 命令。
只是为了调试,我在book/package.json
项目包中安装了eslint
,它似乎对eslint-config
中设置的环境没有理解。例如:"Jest": "testEnvrionment": "Node"
在每个项目中都被忽略。
fictional-project
├── config-packages
│ ├── eslint-config
│ │ └── package.json
│ └── settings
│ └── package.json
├── package.json
├── project-packages
│ └── book
│ ├── book-function-as-a-service.js
│ └── package.json
└── src
└── index.js
【问题讨论】:
【参考方案1】:您确实需要在使用共享配置的包中安装eslint
。在某些情况下它可能在没有它的情况下工作,但您应该明确使用纱线,以便您可以确保二进制文件始终存在/符号链接。我不确定为什么 eslint 没有选择你的 jest 环境设置。您是否在 package.json
中定义您的 eslint 配置?我的 monorepo (Yarn v3.x) 中有类似的设置。可能是您的配置包需要在模块中显式导出配置。希望这对您有所帮助,假设您还没有弄清楚。
.
├── libs
│ └── eslint-config-react
│ ├── index.js
│ └── package.json
│
└── packages
└── some-package
├── .eslintrc.js
└── package.json
./libs/eslint-config-react
index.js 是一个典型的 eslint 配置,package.json 看起来像这样:
"name": "@my-workspace/eslint-config-react",
"main": "index.js",
"dependencies":
"eslint": "7.32.0",
"eslint-config-next": "11.1.3",
"eslint-config-prettier": "8.3.0",
"next": "11.1.3",
"typescript": "4.4.4"
./packages/some-package
package.json
"name": "some-package",
"scripts":
"lint": "eslint .",
,
"devDependencies":
"@my-workspace/eslint-config-react": "workspace:*",
"eslint": "7.32.0",
.eslintrc.js
module.exports =
extends: ['@my-workspace/eslint-config-react'],
;
【讨论】:
以上是关于monorepo Yarn 工作区 - 共享 esLint 和 Prettier 配置的主要内容,如果未能解决你的问题,请参考以下文章
javascript 使用lerna,monorepo和yarn工作空间创建一个babel变换器来修复babel-jest问题
在 Netlify Monorepo (Yarn Workspace/Lerna) 上使用 UI 库作为 Web 应用程序的依赖项