parcel-bundler
Version:
<p align="center"> <a href="https://parceljs.org/" target="_blank"> <img alt="Parcel" src="https://user-images.githubusercontent.com/19409/31321658-f6aed0f2-ac3d-11e7-8100-1587e676e0ec.png" width="749"> </a> </p>
43 lines (33 loc) • 840 B
JavaScript
const babel = require('babel-core');
const config = require('../utils/config');
module.exports = async function(asset) {
if (!await shouldTransform(asset)) {
return;
}
await asset.parseIfNeeded();
let config = {
code: false,
filename: asset.name
};
if (asset.isES6Module) {
config.plugins = [
require('babel-plugin-transform-es2015-modules-commonjs')
];
}
let res = babel.transformFromAst(asset.ast, asset.contents, config);
asset.ast = res.ast;
asset.isAstDirty = true;
};
async function shouldTransform(asset) {
if (asset.isES6Module) {
return true;
}
if (asset.ast) {
return !!asset.babelConfig;
}
if (asset.package && asset.package.babel) {
return true;
}
let babelrc = await config.resolve(asset.name, ['.babelrc', '.babelrc.js']);
return !!babelrc;
}