• Stars
    star
    147
  • Rank 243,883 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 10 years ago
  • Updated about 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Boilerplate for react, ES6 and browserify

Boilerplate for react with ES6 and browserify

This is a boilerplate repo for using react with ES6 and browserify, and running it with gulp.

Installation

npm install

After the installation, run gulp and browse to http://localhost:8888

The compiled code can be found in dist/bundle/app.js.

What do you get

  • A gulpfile with livereload
  • Compilation of the jsx [1]
  • Compilation of ES6 to ES5 [2], [3]

Compilation step

This shows only the relevant steps. All the steps can be found in gulpfile.js. The main compilation step is shown below. Most of the inspiration comes from [7]. You should check this post, there is a great gulpfile included!

Because we also include react in the browserify steps, we use watchify to make the incremental builds fast.

function compileScripts(watch) {
    gutil.log('Starting browserify');

    // The main script
    var entryFile = './app/jsx/app.jsx';

    // Set experimental to true to use features like let, const,...
    es6ify.traceurOverrides = {experimental: true};

    var bundler;
    // Use watchify for fast updates, otherwise use browserify
    if (watch) {
        bundler = watchify(entryFile);
    } else {
        bundler = browserify(entryFile);
    }

    // Include react
    bundler.require(requireFiles);

    // Compile the jsx files
    bundler.transform(reactify);

    // Compile ES6 features. Make sure to set configure is you use .jsx files
    bundler.transform(es6ify.configure(/.jsx/));

    var rebundle = function () {
        // Debug: true: creates sourcemaps
        var stream = bundler.bundle({ debug: true});

        stream.on('error', function (err) { console.error(err) });
        // Source uses vinyl-source-stream. This lets us use the browserify api directly instead of using the gulp-browserify plugin [4].
        stream = stream.pipe(source(entryFile));

        // rename the resulting file to app.js and save it to dist/bundle
        stream.pipe(rename('app.js'));
        stream.pipe(gulp.dest('dist/bundle'));
    }
    
    // When watchify see an update, run rebundle.
    bundler.on('update', rebundle);
    return rebundle();
}

React with ES6

ES6 classes

import React from 'react'; // import react

class _MainSection {
    render() {
        return (
            <div>
                <h1>Example of React with es6 and browserify</h1>
                <Body />
            </div>
        );
    }
}
export const MainSection = React.createClass(_MainSection.prototype);

We can create ES6 classes, but have to export it with React.createClass [5]. Importing the created files can be done like this:

import {MainSection} from './components/MainSection.react.jsx';

String templating for classes

class _Body {
    getClassName() {
        return 'foo';
    }

    render() {
        const x = 'x';

        return (
            <div className={`${x} ${this.getClassName()} bar`}>
                Hello there!
            </div>
        );
    }
}

As you can see, you can use template literals [6] to create your classnames.

Sources

More Repositories

1

image-webpack-loader

Image loader module for webpack
JavaScript
2,035
star
2

react-flexbox

React flexbox implementation
JavaScript
162
star
3

ga-react-router

Google analytics component for react-router
JavaScript
54
star
4

bucklescript-tea-starter-kit

Starter kit for bucklescript with the elm architecture
OCaml
51
star
5

samegame

Implementation of the qml samegame tutorial in Go (http://qt-project.org/doc/qt-5.1/qtquick/tutorials-samegame-samegame1.html)
Go
47
star
6

boilerplate-webpack-react

Boilerplate project for Reactjs with webpack, gulp and stylus
JavaScript
45
star
7

elm-css-webpack-loader

JavaScript
34
star
8

markdown-react

React markdown builder
JavaScript
19
star
9

dream-channels

Phoenix (Elixir) like channels for Dream (Ocaml)
JavaScript
15
star
10

dream-melange-tea-tailwind

Standard ML
15
star
11

angular-picasa

Angular Picasa directive and service
JavaScript
9
star
12

game-of-life-bucklescript

Port of my game of life elm implementation to bucklescript with a pixi.js renderer
JavaScript
7
star
13

game-of-life

Game Of Life implementation in Elm
JavaScript
5
star
14

knobster

Clone of https://gitlab.com/MazeChaZer/knobster implemented at SocratesBe
OCaml
3
star
15

rocket_man

Playing with nerves and the dotstar ledstrip
Elixir
3
star
16

network-monitor-plasmoid

a plasmoid to monitor your available download and upload quota
Python
2
star
17

musictagger

a basic python music tagger
Python
2
star
18

knobster-fsharp-elmish

ported the ocaml example to f# in 30 minutes
F#
2
star
19

bloated-clock-plasmoid

a plasmoid clock with many options written in python
Python
2
star
20

emacs-config

my emacs config
Emacs Lisp
2
star
21

bank-kata-ocaml

OCaml
1
star
22

adventofcode2018

OCaml
1
star
23

elm-maze

Elm Maze
Elm
1
star
24

elm-langton-s-ant

Elm
1
star
25

trenches

2d js + elixir game for socrates
Elixir
1
star
26

elm-connect4

connect4 in elm
Elm
1
star
27

OGA

oga
1
star
28

adventofcode2017

OCaml
1
star
29

bucklescript-fractal-tree

JavaScript
1
star