ES6, React & Browserify

Browserify is a lightweight build tool for JS, you can start ‘require’ modules with zero configuration, Thanks to Babelify, you can start writing ES6 code (via Babel) write away,

Here’s a proof how simple it is,

Lets create a package.json file and install minimal dependencies

npm init
npm install --save react
npm install --save-dev browserify babelify watchify

Lets give Browserify a hint that it should perform code transformation via babelify by adding this json tag to package.json

"browserify": {
  "transform": [
    "babelify"
  ]
}

It can also be nice to just type npm start when developing, so lets add a start script to package.json as well

“start”: “watchify –extension=js -o bundle.js index.js & python -m SimpleHTTPServer”,

Note: Watchify is not mandatory but it’s great tool for watching your code changes and auto rebuild when a change gets discovered.

Lets put the simplest index file ever:

<html>
  <body>
    <script type="text/javascript" src="bundle.js"></script>
  </body>
</html>

Here’s a simple ES6 class with React.

import React from 'react';

class Hello extends React.Component {
  constructor(props) {
    super(props)
    this.state = {count: props.initCount}
    this.tick = this.tick.bind(this)
  }

  tick () {
    this.setState({count: this.state.count + 1});
  }
  render(){
    let { name } = this.props
    let { count } = this.state
    return (
      <button onClick={this.tick}>Hello {name} {count}</button>
    );
  }
}

React.render(<Hello name="Stranger" initCount={5}/>, document.body)

Running the code:

npm start

Open browser http://localhost:8000

To summary:

1) Browserify is lightweight build tool, it handles modularity by understanding require 2) Labelify is a plugin for Browserify, it takes care of transpilling ES6 code to ES5 via Babel. 3) Thanks to Babel & React integration, there’s no need for any extra plugins to perform JSX transformations.