何时使用 babel.config.js 和 .babelrc

MII*_*MII 34 babeljs

我正在学习 Babel 并想学习如何配置 Babel。我找到了两种配置 Babel 的方法:通过创建 babel.config.js 和 .babelrc 文件。在什么情况下我们应该更喜欢一个配置文件而不是另一个?

Bod*_*man 35

从文档 https://babeljs.io/docs/en/config-files#project-wide-configuration

Babel 有两种并行的配置文件格式,可以一起使用,也可以独立使用。

Project-wide configuration
    babel.config.json files, with the different extensions

File-relative configuration
    .babelrc.json files, with the different extensions
    package.json files with a "babel" key
Run Code Online (Sandbox Code Playgroud)

Babel 通过从正在编译的“文件名”开始搜索目录结构来加载 .babelrc.json 文件,或使用支持的扩展名的等效文件

鉴于这些信息

如果您想在文件/目录的子集上运行某些转换/插件,.babelrc会很有用。也许您有不想被 babel 转换/更改的第 3 方库。

如果您的项目中有多个包(即多个 package.json)目录使用单个 babel 配置,那么babel.config.json很有用。这种情况比较少见。

如果您的问题是关于babel 配置的文件扩展名(即.jsvs .json

使用.js公开了 babel 配置 api。

https://babeljs.io/docs/en/config-files#config-function-api

请记住,这会增加缓存的复杂性,大多数情况下最好使用.json静态配置

  • 它在这里说:https://babeljs.io/docs/en/config-files#supported-file-extensions “出于兼容性原因,.babelrc 是 .babelrc.json 的别名。” (3认同)

Pat*_*ick 7

这两种配置似乎有些区别,

看着这个问题:

Jest transformIgnorePatterns 不起作用

有时,某些功能仅适用于某个文件,这是非常模糊的,当然没有记录。(我可以确认上述问题存在,重命名配置文件即可解决)

此外,有时 babel 配置文件会被完全忽略,例如 webpack 和 babel-loader。您希望 babel 加载在项目根目录中找到的 .babelrc 文件,但事实证明它会忽略它并运行 Webpack 中提供的选项。

所以不幸的是,答案有点模糊,而且缺乏关于这些功能如何工作的文档并没有改善这种情况。