Medium/babel

Name: babel

Owner: Medium

Description: :tropical_fish: Babel is a compiler for writing next generation JavaScript.

Forked from: babel/babel

Created: 2016-07-26 16:42:26.0

Updated: 2017-11-26 18:20:03.0

Pushed: 2016-07-26 16:51:12.0

Homepage: https://babeljs.io/

Size: 14339

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

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.

s://phabricator.babeljs.io/T2168
esponds to
s://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 | |——–|——-|————| | babel-core | npm | Dependency Status | | babylon | npm | Dependency Status | | babel-traverse | npm | Dependency Status | | babel-generator | npm | Dependency 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 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 | |——–|——-|————| | babel-cli | npm | Dependency Status | | babel-types | npm | Dependency Status | | babel-polyfill | npm | Dependency Status | | babel-runtime | npm | Dependency Status | | babel-register | npm | Dependency Status | | babel-template | npm | Dependency Status | | babel-helpers | npm | Dependency Status | | babel-code-frame | npm | Dependency Status |

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:

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

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 | External Deps | |——–|——-|————| | babel-helper-bindify-decorators | npm | | | babel-helper-builder-binary-assignment-operator-visitor | npm | | | babel-helper-builder-conditional-assignment-operator-visitor | npm | | | babel-helper-builder-react-jsx | npm | Dependency Status | | babel-helper-call-delegate | npm | | | babel-helper-define-map | npm | Dependency Status | | babel-helper-explode-assignable-expression | npm | | | babel-helper-explode-class | npm | | | babel-helper-fixtures | npm | Dependency Status | | babel-helper-function-name | npm | | | babel-helper-get-function-arity | npm | | | babel-helper-hoist-variables | npm | | | babel-helper-optimise-call-expression | npm | | | babel-helper-plugin-test-runner | npm | | | babel-helper-regex | npm | Dependency Status | | babel-helper-remap-async-to-generator | npm | | | babel-helper-replace-supers | npm | | | babel-helper-transform-fixture-test-runner | npm | Dependency Status |

Misc
License

MIT


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.