我可以在 monorepo 中有多个 babel.config.js 吗?

Can I have multiple babel.config.js in a monorepo?

我有一个结构如下的 monorepo

babel.config.js
packages/
|---mobile/
   |----package.json
   |----src/index.js

|---desktop/
   |----package.json
   |----src/index.js

|---server/
   |----package.json
   |----src/index.js

所以我对 mobiledesktop 包的 babel 配置是相同的,而 server 包的配置是不同的。

现在,我该如何完成该配置?我能想到的一个解决方案是在 monorepo 的根目录下有一个 babel.config.js,它将具有 mobiledesktop 包的配置以及 server 的单独配置在 server 包级别的 babel.config.js 包中。我不确定,我们甚至可以有多个 babel.config.js.

是的,您可以通过拥有多个配置文件来实现您的要求。它在 babel 文档中被称为文件相关配置。

在您的每个目录(移动、桌面、服务器)中创建一个 .babelrc 或 .babelrc.js 文件

有关详细信息,请参阅 https://babeljs.io/docs/en/next/config-files

就我个人而言,我认为使用单独的文件会导致混淆。假设您已经以一种可以正常工作的方式设置了您的系统,并且您只是询问如何为不同的位置指定不同的配置,您可以使用 "overrides" 选项。比如你的配置可以做到

module.exports = {
  overrides: [{
    test: [
      './desktop',
      './mobile',
    ],

    // put all your normal babel options for these folders here
  }, {
    test: [
      './server',
    ],

    // put all your normal babel options for the server here
  }],
};