Install Babel and the presets:javascript
npm install --save-dev babel-core babel-preset-es2015
Install babel-loader
:html
npm install --save-dev babel-loader
Configure Babel to use these presets by adding .babelrc
java
{ "presets": [ "es2015" ] }
Modify webpack.config.js
to process all .js
files using babel-loader
.node
module.exports = { entry: './src/app.js', output: { path: './bin', filename: 'app.bundle.js', }, module: { loaders: [{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader', }] } }
We are excluding
node_modules
here because otherwise all external libraries will also go through Babel, slowing down compilation.jquery
Install the libraries you want to use (in this example, jQuery):webpack
npm install --save jquery babel-polyfill
We are using
--save
instead of--save-dev
this time, as these libraries will be used in runtime. We also usebabel-polyfill
so that ES2015 APIs are available in older browsers.web
Edit src/app.js
:npm
import 'babel-polyfill'; import cats from './cats'; import $ from 'jquery'; $('<h1>Cats</h1>').appendTo('body'); const ul = $('<ul></ul>').appendTo('body'); for (const cat of cats) { $('<li></li>').text(cat).appendTo(ul); }
Bundle the modules using webpack:babel
webpack
Add index.html
so this app can be run:app
<!DOCTYPE html><body> <script src="bin/app.bundle.js"></script>