Solución:
De los documentos
https://babeljs.io/docs/en/config-files#project-wide-configuration
Babel tiene dos formatos de archivo de configuración paralelos que se pueden usar juntos o de forma independiente.
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
Babel carga archivos .babelrc.json, o uno equivalente usando las extensiones compatibles, buscando en la estructura del directorio comenzando por el “nombre de archivo” que se está compilando.
Dada esa información
.babelrc sería útil si desea ejecutar ciertas transformaciones / complementos en un subconjunto de archivos / directorios. Tal vez tenga bibliotecas de terceros que no desea que babel transforme / cambie.
babel.config.json es útil si tiene varios directorios de paquetes (es decir, varios paquetes package.json) en su proyecto que utilizan una única configuración de babel. Esto es menos común.
Si su pregunta es sobre extensiones de archivo (p. Ej. .js
vs .json
) con respecto a las configuraciones de babel
Utilizando .js
expone una api de configuración de babel.
https://babeljs.io/docs/en/config-files#config-function-api
Tenga en cuenta que esto aumenta la complejidad con respecto al almacenamiento en caché, la mayoría de las veces es mejor usar .json
configuraciones estáticas
Parece haber alguna diferencia entre las dos configuraciones,
Mirando esta pregunta:
Jest transformIgnorePatterns no funciona
A veces, ciertas características solo funcionan con un determinado archivo, esto es extremadamente vago y ciertamente no está documentado. (Puedo confirmar que existe el problema mencionado anteriormente y cambiar el nombre del archivo de configuración lo resuelve)
Además, en otras ocasiones, los archivos de configuración de babel se ignoran por completo, como en el caso de webpack y babel-loader. Es de esperar que babel cargue el archivo .babelrc que se encuentra en la raíz del proyecto, pero resulta que lo ignorará y ejecutará las opciones proporcionadas dentro de Webpack.
Entonces, desafortunadamente, la respuesta es un poco vaga, y la falta de documentación sobre cómo funcionan estas características no mejora la situación.