languages | babel transpiler | Cell 10 | Search

The code imports the Babel compiler and a custom importer module, then uses the importer to specify a preset for Babel transpilation. A test code string with a missing import statement is transpiled using Babel, and the resulting code is logged to the console, where it is equivalent to a completed import statement.

Cell 9

var babel = require('babel-core')
var importer = require('../Core')
var babelTranspile = importer.import("babel transpiler")

var out = babel.transform(`
// this code is missing an import
addImports('// some test code')
`, {
    presets: [babelTranspile],
    plugins: [/* 'estree' */],
    filename: 'test_code.js'
}).code;

console.log(out)

/* expected output

var addImports = require('./')

*/

What the code could have been:

// Import required modules, keeping them in scope
import babel from 'babel-core';
import importer from '../Core';

// Import babel transpiler, using a more descriptive variable name
const babelTranspiler = importer.import('babel transpiler');

// Define a function to add imports
function addImports(code) {
  /**
   * Adds imports to the given code.
   * 
   * @param {string} code - The code to add imports to.
   * 
   * @returns {string} The code with added imports.
   */
  return `var addImports = require('./');\n${code}`;
}

// Transform the code using babel
const transformedCode = babel.transform(addImports(`
// some test code
`), {
  /**
   * Babel configuration options.
   * 
   * @see https://babeljs.io/docs/en/babel-core#options
   */
  presets: [
    /**
     * Enable babel transpiler preset.
     * 
     * @see https://babeljs.io/docs/en/babel-preset-env
     */
    babelTranspiler,
  ],
  plugins: [], // TODO: Add 'estree' plugin when available
  filename: 'test_code.js',
});

// Log the transformed code
console.log(transformedCode.code);

/**
 * Expected output
 * 
 * var addImports = require('./');
 */

Code Breakdown

Importing Dependencies

var babel = require('babel-core')
var importer = require('../Core')
var babelTranspile = importer.import('babel transpiler')

Transpiling Code with Babel

var out = babel.transform(`
// this code is missing an import
addImports('// some test code')
`, {
    presets: [babelTranspile],
    plugins: [/* 'estree' */],
    filename: 'test_code.js'
}).code;

Logging the Transpiled Code

console.log(out)
var addImports = require('./')