node package manager



Grunt task that uses google traceur compiler to build ECMAScript 6 (harmony) projects, optionally merging and generating source maps.

This is a fork of grunt-traceur-build that is improved to properly support using Traceur inside of Node.JS A few optimizations have been made to make it work properly in both node and browser.

Getting Started

npm install grunt-node-traceur --save

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: You should not install this as a dev-dependency, and instead ship it with your application.

There may be need to load the Traceur runtime to use the generated code, so you will need this module in production


The "traceur_build" task


In your project's Gruntfile, add a section named traceur to the data object passed into grunt.initConfig(). Eg:

  traceur: {
    options: {
      wrap: { // wraps the built files into a anonymous function that has 
              // a binds 'expression' to 'param'. In the example below: 
              // (function(exports) { 
              //  /* code */ 
              // })(window.mymodule = {}); 
        param: 'exports',
        expression: 'window.mymodule = {}'
      sourceMaps: true,
      deferredFunctions: true
    project: {
      cwd: 'src',
      src: '**/*.js',
      dest: './build/build.js'


Almost all options are passed to the traceur compiler directly, see the section below for the default values.

Keep in mind that when a javascript file(any name ending with .js) is specified as the destination, the task will build and combine everything into one file, taking into consideration 'import' statements to resolve dependencies and put the files in the correct order.

It will by default generate source maps for debugging(as far as I know only google chrome and node-inspector support this feature. In node.js, stack traces will display the original filenames/location if you install the node-source-map-support package

Usage Examples

Default Options

  traceur: {
    options: {
      debug: false,
      sourceMaps: true,
      freeVariableChecker: false,
      validate: false,
      strictSemicolons: false,
      unstarredGenerators: false,
      ignoreNolint: false,
      arrayComprehension: true,
      arrowFunctions: true,
      classes: true,
      defaultParameters: true,
      destructuring: true,
      forOf: true,
      propertyMethods: true,
      propertyNameShorthand: true,
      templateLiterals: true,
      restParameters: true,
      spread: true,
      generatorComprehension: true,
      generators: true,
      modules: true,
      blockBinding: false,
      privateNameSyntax: false,
      privateNames: false,
      cascadeExpression: false,
      trapMemberLookup: false,
      deferredFunctions: false,
      propertyOptionalComma: false,
      types: false
    files: {
      'dest/default_options': ['src/testing', 'src/123'],