xeira
Version:
One Web Dev stack tool to rule them all
38 lines (28 loc) • 1.03 kB
JavaScript
import path from 'path'
import babelMerge from 'babel-merge'
import { loadPartialConfig } from "@babel/core"
import { getBabelPluginForResolvingAliases } from '../utils/aliases.mjs'
function _getBabelConfigName (context, esm= false) {
return `babel${context.usesReact ? '.react' : ''}.${esm ? 'mjs' : 'cjs'}`
}
async function _getBabelDefaultConfig (context) {
const configModule = await import(path.join('../../configs', _getBabelConfigName(context, /*esm=*/ true)))
let config= configModule.default
const plugin = getBabelPluginForResolvingAliases(context)
if (plugin) {
config= babelMerge(config, {plugins: [plugin]})
}
return config
}
async function getBabelConfig (context, filename, custom) {
let babelDefConfig = await _getBabelDefaultConfig(context)
const partialConfig= loadPartialConfig({filename})
let mergedConfig= babelMerge(babelDefConfig, partialConfig)
if (custom) {
mergedConfig= babelMerge(mergedConfig, custom)
}
return mergedConfig
}
export {
getBabelConfig
}