Babel compiler core.
var babel = require("babel-core");
import { transform } from "babel-core";
import * as babel from "babel-core";
All transformations will use your local configuration files (.babelrc
or in package.json
). See options to disable it.
babel.transform(code: string, options?: Object)
Transforms the passed in code
. Returning an object with the generated code,
source map, and AST.
babel.transform(code, options) // => { code, map, ast }
Example
var result = babel.transform("code();", options);
result.code;
result.map;
result.ast;
babel.transformFile(filename: string, options?: Object, callback: Function)
Asynchronously transforms the entire contents of a file.
babel.transformFile(filename, options, callback)
Example
babel.transformFile("filename.js", options, function (err, result) {
result; // => { code, map, ast }
});
babel.transformFileSync(filename: string, options?: Object)
Synchronous version of babel.transformFile
. Returns the transformed contents of
the filename
.
babel.transformFileSync(filename, options) // => { code, map, ast }
Example
babel.transformFileSync("filename.js", options).code;
babel.transformFromAst(ast: Object, code?: string, options?: Object)
Given an AST, transform it.
const sourceCode = "if (true) return;";
const parsedAst = babylon.parse(sourceCode, { allowReturnOutsideFunction: true });
const { code, map, ast } = babel.transformFromAst(parsedAst, sourceCode, options);
You can pass these options from the Babel CLI like so:
babel --name=value
Following is a table of the options you can use:
Option | Default | Description |
---|---|---|
ast |
true |
Include the AST in the returned object |
auxiliaryCommentAfter |
null |
Attach a comment after all non-user injected code |
auxiliaryCommentBefore |
null |
Attach a comment before all non-user injected code |
babelrc |
true |
Specify whether or not to use .babelrc and .babelignore files. Not available when using the CLI, use --no-babelrc instead |
code |
true |
Enable code generation |
comments |
true |
Output comments in generated output |
compact |
"auto" |
Do not include superfluous whitespace characters and line terminators. When set to "auto" compact is set to true on input sizes of >500KB |
env |
{} |
This is an object of keys that represent different environments. For example, you may have: { env: { production: { /* specific options */ } } } which will use those options when the environment variable BABEL_ENV is set to "production" . If BABEL_ENV isn't set then NODE_ENV will be used, if it's not set then it defaults to "development" |
extends |
null |
A path to a .babelrc file to extend |
filename |
"unknown" |
Filename for use in errors etc |
filenameRelative |
(filename) |
Filename relative to sourceRoot |
generatorOpts |
{} |
An object containing the options to be passed down to the babel code generator, babel-generator |
getModuleId |
null |
Specify a custom callback to generate a module id with. Called as getModuleId(moduleName) . If falsy value is returned then the generated module id is used |
highlightCode |
true |
ANSI highlight syntax error code frames |
ignore |
null |
Opposite to the only option. ignore is disregarded if only is specified |
inputSourceMap |
null |
A source map object that the output source map will be based on |
minified |
false |
Should the output be minified (not printing last semicolons in blocks, printing literal string values instead of escaped ones, stripping () from new when safe) |
moduleId |
null |
Specify a custom name for module ids |
moduleIds |
false |
If truthy, insert an explicit id for modules. By default, all modules are anonymous. (Not available for common modules) |
moduleRoot |
(sourceRoot) |
Optional prefix for the AMD module formatter that will be prepend to the filename on module definitions |
only |
null |
A glob, regex, or mixed array of both, matching paths to only compile. Can also be an array of arrays containing paths to explicitly match. When attempting to compile a non-matching file it's returned verbatim |
parserOpts |
{} |
An object containing the options to be passed down to the babel parser, babylon |
plugins |
[] |
List of plugins to load and use |
presets |
[] |
List of presets (a set of plugins) to load and use |
retainLines |
false |
Retain line numbers. This will lead to wacky code but is handy for scenarios where you can't use source maps. (NOTE: This will not retain the columns) |
resolveModuleSource |
null |
Resolve a module source ie. import "SOURCE"; to a custom value. Called as resolveModuleSource(source, filename) |
shouldPrintComment |
null |
An optional callback that controls whether a comment should be output or not. Called as shouldPrintComment(commentContents) . NOTE: This overrides the comment option when used |
sourceFileName |
(filenameRelative) |
Set sources[0] on returned source map |
sourceMaps |
false |
If truthy, adds a map property to returned output. If set to "inline" , a comment with a sourceMappingURL directive is added to the bottom of the returned code. If set to "both" then a map property is returned as well as a source map comment appended. This does not emit sourcemap files by itself! To have sourcemaps emitted using the CLI, you must pass it the --source-maps option |
sourceMapTarget |
(filenameRelative) |
Set file on returned source map |
sourceRoot |
(moduleRoot) |
The root from which all sources are relative |
sourceType |
"module" |
Indicate the mode the code should be parsed in. Can be either "script" or "module" |
wrapPluginVisitorMethod |
null |
An optional callback that can be used to wrap visitor methods. NOTE: This is useful for things like introspection, and not really needed for implementing anything. Called as wrapPluginVisitorMethod(pluginAlias, visitorType, callback) . |