Skip to content

An opinionated boilerplate that uses traceur to allow for es6 features and uses browserify for file bundleing

Notifications You must be signed in to change notification settings

thoughtram/es6-browserify-boilerplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ES6 Browserify Boilerplate

This is an boilerplate repo to make it easy to experiment with ES6. It also includes some additional features, such as annotations and run-time type checks. It's inspired by angular-es6-boilerplate but transpiles modules to CommonJS syntax instead and bundles files with Browserify

Initial setup

# Clone the repo...
git clone https://github.com/thoughtram/es6-browserify-boilerplate.git.git
cd es6-browserify-boilerplate

# Then, you need to install all the dependencies...
npm install

# If you wanna be able to use global commands `karma` and `gulp`...
npm install -g gulp

Running in the browser

gulp build
gulp serve

# If you wanna Gulp to re-build on every change...
gulp watch

WTF is ES6?

Simply, the next version of JavaScript that contains some really cool features. You might check out some of these:

What are all the pieces involved?

Transpiles ES6 code into regular ES5 (today's JavaScript) so that it can be run in a today browser.

Traceur is configured to transpile ES6 modules into CommonJS syntax and we use browserify to bundle the code into one file to deliver it to the browser.

Browserify walks through all files and traces down all require()s to bundle all files together.

Task runner to make defining and running the tasks simpler.

1/ meta data annotations

class SomeAnnotation {}
class AnotherAnnotation {}

@SomeAnnotation
class Foo {
  constructor(@AnotherAnnotation bar) {}
}

This is a very similar syntax to annotations in Java/Dart. It is just a nice declarative way to put additional meta data on classes/functions/parameters.

When annotations: true, Traceur transpiles the above code code into something like this:

// ...

Foo.annotations = [new SomeAnnotation];
Foo.parameters = [[new AnotherAnnotation]];

Therefore you can easily achieve the same thing without transpiling the code. It just won't be as pretty ;-)

2/ type annotations

function request(url: String, data: Object, callback: Function) {
  // ...
}

The syntax is more-less the same as [TypeScript].

When types: true, annotations: true, Traceur transpiles this code into something like this:

function request(url, data, callback) {
  // ...
}

// this code might change
request.parameters = [[String], [Object], [Function]];

When also typeAssertions: true, Traceur generates run-time assertions, such as:

function request(url, data, callback) {
  assert.argumentTypes(
    url, String,
    data, Object,
    callback, Function
  );
}

About

An opinionated boilerplate that uses traceur to allow for es6 features and uses browserify for file bundleing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published