2016-07-25 09:44:44 -04:00
2016-06-22 09:51:19 -04:00
2016-02-04 11:07:04 -05:00
2016-06-27 17:01:58 -04:00
2015-11-09 17:58:36 -08:00
2015-07-16 15:46:31 +01:00
2015-11-09 04:03:59 -08:00
2016-07-23 14:09:34 -04:00
2016-01-04 22:59:12 -05:00
2016-06-27 17:01:58 -04:00
2015-11-11 23:24:39 -08:00
2016-06-26 17:28:14 -04:00

babel

The compiler for writing next generation JavaScript.

Travis Status CircleCI Status Coverage Status Slack Status

Docs?

Check out our website: http://babeljs.io/

Looking for support?

For questions and support please visit the discussion forum, Slack community, or StackOverflow.

Want to report a bug or request a feature?

We are in the process of moving our issues from phabricator back to github issues! Check out https://github.com/babel/phabricator-to-github for more info

Bugs and feature requests should be posted at phabricator.babeljs.io.

You can directly translate a github issue to phabricator; just add a T to the beginning of the issue.

https://phabricator.babeljs.io/T2168
corresponds to
https://github.com/babel/babel/issues/2168

Want to report an issue with babeljs.io (the website)?

For documentation and website issues please visit the babel.github.io repo.

Want to contribute to Babel?

Check out our CONTRIBUTING.md. If you have already joined slack, join our #development channel!

Packages

The Babel repo is managed as a monorepo; it's composed of many npm packages.

Core Packages

Package Version Dependencies DevDependencies
babel-core npm Dependency Status devDependency Status
babylon npm Dependency Status devDependency Status
babel-traverse npm Dependency Status devDependency Status
babel-generator npm Dependency Status devDependency Status

babel-core is the Babel compiler itself; it exposes the babel.transform method, where transformedCode = transform(src).code.

The compiler can be broken down into 3 parts:

  • The parser: babylon (moved to a seperate repo and versioned independently)
  • The transformer[s]: All the plugins/presets
  • The generator: babel-generator

The flow goes like this:

input string -> babylon parser -> AST -> transformer[s] -> AST -> babel-generator -> output string

Check out the babel-handbook for more information on this.

Other

Package Version Dependencies DevDependencies
babel-cli npm Dependency Status devDependency Status
babel-types npm Dependency Status devDependency Status
babel-polyfill npm Dependency Status devDependency Status
babel-runtime npm Dependency Status devDependency Status
babel-register npm Dependency Status devDependency Status
babel-template npm Dependency Status devDependency Status
babel-helpers npm Dependency Status devDependency Status
babel-code-frame npm Dependency Status devDependency Status
  • babel-cli is the CLI tool that runs babel-core and helps with outputting to a directory, a file, stdout and more (also includes babel-node). Check out the docs.
  • babel-types is used to validate, build, change AST nodes.
  • babel-polyfill is literally a wrapper around core-js and regenerator-runtime. Check out the docs.
  • babel-runtime is similar to the polyfill except that it doesn't modify the global scope and is to be used with babel-plugin-transform-runtime (usually in library/plugin code). Check out the docs
  • babel-register is a way to automatically compile files with babel on the fly by binding to node's require. Check out the docs
  • babel-template is a helper function to make AST nodes. Instead you can pass a string representing the code you want to create rather than tediously building them using babel-types.
  • babel-helpers is a set of premade babel-template functions that are used in some babel plugins.
  • babel-code-frame is a standalone package used to generate errors that prints the source code and points to error locations.

Presets

After Babel 6, the default transforms were removed; if you don't specify any plugins/presets it will just return the original source code.

The transformer[s] used in Babel are the independent pieces of code that transform specific things. For example: the es2015-arrow-functions transform specifically changes arrow functions into a regular function. Presets are just simply an array of plugins that make it easier to run a whole a set of transforms without specifying each one manually.

There are a few presets that we maintain officially.

Package Version Dependencies
babel-preset-es2015 npm Dependency Status
babel-preset-es2016 npm Dependency Status
babel-preset-stage-0 npm Dependency Status
babel-preset-stage-1 npm Dependency Status
babel-preset-stage-2 npm Dependency Status
babel-preset-stage-3 npm Dependency Status
babel-preset-react npm Dependency Status

We maintain:

  • a preset for each yearly release of ECMAScript (Javascript) starting from ES6/ES2015
  • a preset for react (JSX/Flow)
  • a preset for each stage (0-3) of the TC-39 Process for ECMAScript proposals.

You can find community maintained presets on npm

Plugins

Plugins are the heart of Babel and what make it work.

You can find community plugins on npm.

Transform Plugins

There are many kinds of plugins: ones that convert ES6/ES2015 to ES5, transform to ES3, minification, JSX, flow, experimental features, and more.

Package Version Dependencies
babel-plugin-check-es2015-constants npm Dependency Status
babel-plugin-transform-async-functions npm Dependency Status
babel-plugin-transform-async-to-generator npm Dependency Status
babel-plugin-transform-async-to-module-method npm Dependency Status
babel-plugin-transform-class-constructor-call npm Dependency Status
babel-plugin-transform-class-properties npm Dependency Status
babel-plugin-transform-decorators npm Dependency Status
babel-plugin-transform-do-expressions npm Dependency Status
babel-plugin-transform-es2015-arrow-functions npm Dependency Status
babel-plugin-transform-es2015-block-scoped-functions npm Dependency Status
babel-plugin-transform-es2015-block-scoping npm Dependency Status
babel-plugin-transform-es2015-classes npm Dependency Status
babel-plugin-transform-es2015-computed-properties npm Dependency Status
babel-plugin-transform-es2015-destructuring npm Dependency Status
babel-plugin-transform-es2015-duplicate-keys npm Dependency Status
babel-plugin-transform-es2015-for-of npm Dependency Status
babel-plugin-transform-es2015-function-name npm Dependency Status
babel-plugin-transform-es2015-instanceof npm Dependency Status
babel-plugin-transform-es2015-literals npm Dependency Status
babel-plugin-transform-es2015-modules-amd npm Dependency Status
babel-plugin-transform-es2015-modules-commonjs npm Dependency Status
babel-plugin-transform-es2015-modules-systemjs npm Dependency Status
babel-plugin-transform-es2015-modules-umd npm Dependency Status
babel-plugin-transform-es2015-object-super npm Dependency Status
babel-plugin-transform-es2015-parameters npm Dependency Status
babel-plugin-transform-es2015-shorthand-properties npm Dependency Status
babel-plugin-transform-es2015-spread npm Dependency Status
babel-plugin-transform-es2015-sticky-regex npm Dependency Status
babel-plugin-transform-es2015-template-literals npm Dependency Status
babel-plugin-transform-es2015-typeof-symbol npm Dependency Status
babel-plugin-transform-es2015-unicode-regex npm Dependency Status
babel-plugin-transform-es3-member-expression-literals npm Dependency Status
babel-plugin-transform-es3-property-literals npm Dependency Status
babel-plugin-transform-es5-property-mutators npm Dependency Status
babel-plugin-transform-eval npm Dependency Status
babel-plugin-transform-exponentiation-operator npm Dependency Status
babel-plugin-transform-export-extensions npm Dependency Status
babel-plugin-transform-flow-comments npm Dependency Status
babel-plugin-transform-flow-strip-types npm Dependency Status
babel-plugin-transform-function-bind npm Dependency Status
babel-plugin-transform-inline-environment-variables npm Dependency Status
babel-plugin-transform-jscript npm Dependency Status
babel-plugin-transform-member-expression-literals npm Dependency Status
babel-plugin-transform-merge-sibling-variables npm Dependency Status
babel-plugin-transform-minify-booleans npm Dependency Status
babel-plugin-transform-node-env-inline npm Dependency Status
babel-plugin-transform-object-assign npm Dependency Status
babel-plugin-transform-object-rest-spread npm Dependency Status
babel-plugin-transform-object-set-prototype-of-to-assign npm Dependency Status
babel-plugin-transform-property-literals npm Dependency Status
babel-plugin-transform-proto-to-assign npm Dependency Status
babel-plugin-transform-react-constant-elements npm Dependency Status
babel-plugin-transform-react-display-name npm Dependency Status
babel-plugin-transform-react-inline-elements npm Dependency Status
babel-plugin-transform-react-jsx npm Dependency Status
babel-plugin-transform-react-jsx-compat npm Dependency Status
babel-plugin-transform-react-jsx-self npm Dependency Status
babel-plugin-transform-react-jsx-source npm Dependency Status
babel-plugin-transform-regenerator npm Dependency Status
babel-plugin-transform-remove-console npm Dependency Status
babel-plugin-transform-remove-debugger npm Dependency Status
babel-plugin-transform-runtime npm Dependency Status
babel-plugin-transform-simplify-comparison-operators npm Dependency Status
babel-plugin-transform-strict-mode npm Dependency Status
babel-plugin-transform-undefined-to-void npm Dependency Status

Syntax Plugins

These just enable the transform plugins to be able to parse certain features (the transform plugins already include the syntax plugins so you don't need both).

Package Version
babel-plugin-syntax-async-functions npm
babel-plugin-syntax-async-generators npm
babel-plugin-syntax-class-constructor-call npm
babel-plugin-syntax-class-properties npm
babel-plugin-syntax-decorators npm
babel-plugin-syntax-do-expressions npm
babel-plugin-syntax-exponentiation-operator npm
babel-plugin-syntax-export-extensions npm
babel-plugin-syntax-flow npm
babel-plugin-syntax-function-bind npm
babel-plugin-syntax-function-sent npm
babel-plugin-syntax-jsx npm
babel-plugin-syntax-object-rest-spread npm

Helpers

These are mostly for internal use in plugins.

Package Version Dependencies
babel-helper-bindify-decorators npm Dependency Status
babel-helper-builder-binary-assignment-operator-visitor npm Dependency Status
babel-helper-builder-conditional-assignment-operator-visitor npm Dependency Status
babel-helper-builder-react-jsx npm Dependency Status
babel-helper-call-delegate npm Dependency Status
babel-helper-define-map npm Dependency Status
babel-helper-explode-assignable-expression npm Dependency Status
babel-helper-explode-class npm Dependency Status
babel-helper-fixtures npm Dependency Status
babel-helper-function-name npm Dependency Status
babel-helper-get-function-arity npm Dependency Status
babel-helper-hoist-variables npm Dependency Status
babel-helper-optimise-call-expression npm Dependency Status
babel-helper-plugin-test-runner npm Dependency Status
babel-helper-regex npm Dependency Status
babel-helper-remap-async-to-generator npm Dependency Status
babel-helper-replace-supers npm Dependency Status
babel-helper-transform-fixture-test-runner npm Dependency Status

Misc

  • babel the deprecated babel package on npm that was used in Babel 5.
  • babel-messages a package to keep error messages, etc (not always used)

License

MIT

Description
No description provided
Readme 79 MiB
Languages
JavaScript 99.5%
Makefile 0.3%
HTML 0.1%