Babel
Babel complies the new js depencies down to basic js allowing it to be used across browsers
No real competition, this is it baby
you install individual plugins to get any features and set .babelrc
or babel.config.js
or something
Webpack or browserify will do this auto
Watch out, all the babel 6 guides have all the plugins/extensions use something like babel-preset-env
while babel 7 changed everything to @babel/preset-env
Super Basic
Babel Standalone
A nice collection of babel and plugins
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- Your custom script here -->
<script type="text/babel">
const getMessage = () => "Hello World";
document.getElementById('output').innerHTML = getMessage();
</script>
Load External Scripts
<script type="text/babel" src="foo.js"></script>
Command LIne
You can install a babel cli and run the command to compile it and see it yourself
Basic Configuration
You want to programmatically create the configuration?
You want to compile
node_modules
?
babel.config.js
is for you!
You have a static configuration that only applies to your simple single package?
.babelrc
is for you!
{
plugins: ["@babel/plugin-transform-runtime"]
}
You just add npm install the plugin and add it to this list
Async/Await Runtime
npm install --save @babel/runtime
npm install --save-dev @babel/plugin-transform-runtime
Add this as a plugin as above
Presets
Groups of plugins
babel-preset-env
npm install --save-dev @babel/preset-env
.babelrc
{
"presets": [
["env", {
"targets": {
"browsers": ["last 5 Chrome versions"]
}
}]
}
Allows you to specify the specific browsers to support which can greatly simplify file size
source maps are to allow debugging in the console to the correct lines
Good default
@babel/core @babel/cli
do nothing alone
babel-loader
is for web pack usage and configuration
babel-preset-react
is for react stuff
npm install --save-dev babel-loader babel-core babel-preset-react babel-preset-env babel-plugin-transform-runtime
npm install --save babel-runtime
.babelrc
{
"presets": [
["env", "targets": {
"browsers": ["defaults"]
}],
"react"
],
"plugins": [
"transform-runtime"
]
}
Last updated