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 配置的主要内容,如果未能解决你的问题,请参考以下文章

使用共享库时 Yarn 工作区的最佳实践

使用 monorepo 部署到 Firebase 函数

javascript 使用lerna,monorepo和yarn工作空间创建一个babel变换器来修复babel-jest问题

在 Netlify Monorepo (Yarn Workspace/Lerna) 上使用 UI 库作为 Web 应用程序的依赖项

Yarn & Monorepo:防止使用本地包

强制纱线将某些模块安装到给定的工作区,而不是将它们移动到monorepo的共享节点模块?