【问题标题】:monorepo Yarn workspaces - shared esLint and Prettier configsmonorepo Yarn 工作区 - 共享 esLint 和 Prettier 配置
【发布时间】: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

【问题讨论】:

    标签: node.js eslint yarnpkg prettier monorepo


    【解决方案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'],
    };
    

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2020-12-25
      • 1970-01-01
      • 2017-11-25
      • 2021-04-05
      • 2021-10-22
      • 2018-08-27
      • 2018-08-31
      • 2018-02-22
      相关资源
      最近更新 更多