Babel preset for ES2015 transformation optimized for Rollup.js bundling with external helpers support
npx @tessl/cli install tessl/npm-babel-preset-es2015-rollup@3.0.0babel-preset-es2015-rollup is a customized Babel preset that provides ES2015+ JavaScript transformation specifically optimized for use with Rollup.js bundler. It extends the standard babel-preset-es2015 by removing CommonJS module transformation and adding external helpers support to enable efficient tree-shaking and bundle optimization.
npm install babel-preset-es2015-rollupconst babelPresetEs2015Rollup = require("babel-preset-es2015-rollup");Note: This package uses CommonJS and exports via module.exports. ES module imports may not work reliably in all environments.
// With babel-core transform
const babel = require("babel-core");
const preset = require("babel-preset-es2015-rollup");
const result = babel.transform(
"const greet = (name) => `Hello, ${name}!`;",
{ presets: [preset] }
);
console.log(result.code);
// Output: "var greet = function greet(name) { return \"Hello, \" + name + \"!\"; };"
// With rollup-plugin-babel
// rollup.config.js
import babel from "rollup-plugin-babel";
export default {
input: "src/main.js",
output: { file: "dist/bundle.js", format: "umd" },
plugins: [
babel({
presets: [require("babel-preset-es2015-rollup")],
exclude: "node_modules/**"
})
]
};The preset is constructed by:
babel-preset-es2015babel-plugin-transform-es2015-modules-commonjs to preserve ES modulesbabel-plugin-external-helpers for shared helper functionsThis approach enables:
import/export statements for Rollup's tree-shakingProvides a complete Babel preset configuration object optimized for Rollup.js bundling workflows.
/**
* Default export providing Babel preset configuration
* @returns {PresetConfiguration} Babel preset with plugins array
*/
module.exports: PresetConfiguration;
interface PresetConfiguration {
/** Array of Babel plugins for ES2015 transformation */
plugins: BabelPlugin[];
}
type BabelPlugin = string | [string, PluginOptions] | Function | [Function, PluginOptions];
interface PluginOptions {
[key: string]: any;
}Key Features:
import and export statements unchanged for Rollup processingUsage Examples:
// Direct usage with babel-core
const babel = require("babel-core");
const preset = require("babel-preset-es2015-rollup");
// Transform ES2015 features (excluding modules)
const code = "() => {};";
const result = babel.transform(code, { presets: [preset] });
console.log(result.code); // "(function () {});"
// Modules are preserved for Rollup
const moduleCode = 'import foo from "foo"; export default 0;';
const moduleResult = babel.transform(moduleCode, { presets: [preset] });
console.log(moduleResult.code); // 'import foo from "foo"; export default 0;'
// External helpers are used for certain operations
const helperCode = "typeof a;";
const helperResult = babel.transform(helperCode, { presets: [preset] });
console.log(helperResult.code);
// 'typeof a === "undefined" ? "undefined" : babelHelpers.typeof(a);'Runtime Dependencies:
babel-preset-es2015 (^6.3.13): Base ES2015 presetbabel-plugin-external-helpers (^6.18.0): External helper supportrequire-relative (^0.8.7): Relative module resolution utilityCompatibility:
rollup-plugin-babelTypical Workflow:
rollup-plugin-babel.babelrc