grunt-coffeeify

A grunt plugin for browserifying your coffee + js projects!

grunt-coffeeify

A grunt plugin for browserifying your coffee + js projects!

grunt-coffeeify is a Browserify ~2.6.0 compatible browserifier. It is a grunt multitask. It supports browserify require, browserify debug, browserify transform, insert-globals, and ignore-missing. It is intended to replace the grunt-browserify grunt plugin for grunt >= 0.4.1.

Thanks to @substack for the wonderful browserify and coffeeify node modules.

This plugin requires Grunt ~0.4.1

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-coffeeify --save-dev

One the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-coffeeify');

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

grunt.initConfig({
  coffeeify: {
    options: {
      // Task-specific options go here. 
    },
    your_target: {
      // Target-specific file lists and/or options go here. 
    },
  },
})

Type: Boolean Default value: false

Skip detection and always insert definitions for process, global, __filename, and __dirname.

benefit: faster builds cost: extra bytes

Type: Boolean Default value: true

Detect the presence of process, global, __filename, and __dirname and define these values when present.

benefit: npm modules are more likely to work cost: slower builds

Type: Boolean Default value: false

Ignore require() statements that don't resolve to anything.

Type: Boolean Default value: false

Enable source maps that allow you to debug your files separately.

Type: Array Default value: null

An array of npm module names or relative paths to files to include in the bundle.

Type: Array Default value: [coffeeify]

An array of functions fitting the signature:

function(file) {
   ...
   return through();
}

where through() is a through-stream. The coffeeify transform by default, which compiles all coffee-script source files while browserifying them.

Type: String Default value: ''

String to prepend to the bundle. Useful for licenses or banners, for example.

Type: String Default value: ''

String to append to the bundle.

In this example, the default options are used to coffeeify a project with mixed js and coffee-script source files. The files array can have many src/dest file objects. src path glob patterns are supported by minimatch. This example will resolve all requires and compile all coffee files when bundling.

grunt.initConfig({
  coffeeify: {
    options: {},
    files: [
      {src:['path/to/src/**/*.coffee', 'path/to/src/**/*.js'], dest:'dist/myApp.js'}
    ]
  },
})

This example is similar, but I have included the non-default requires, transforms, and debug options. This example will bundle the source like before, including the when js module, and brfs and coffeeify transforms, as well as generate sourcemaps for all required files. Note the file requires need to be specified as relative to the Gruntfile.

grunt.initConfig({
  coffeeify: {
    options: {
      transforms: [brfs],
      requires: ['when', './relative/path/to/file/from/here.js'],
      debug: true
    },
    files: [
      {src:['path/to/src/**/*.coffee', 'path/to/src/**/*.js'], dest:'dist/myApp.js'}
    ]
  },
})

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

(Nothing yet)

Please use the github issues list to report any issues. If possible, please include a link to an open github repo with the smallest failing example of your issue. Even better, fork the project, create a failing test case and issue a pull request with the issue number referenced in the pull request. Even better than thant, fork the project create a failing test case, fix the problem, and issue a pull request with the test and fix referencing the issue number.