shampoo
Version:
The ultimate Grunt Browserify task. Run once or watch files for changes. Uses a cache for super speed (instant builds). CoffeeScript support built in. Alias mappings. Shimming. Everything in one easy to use package.
95 lines (82 loc) • 2.31 kB
JavaScript
/*
* grunt-browserifying
* https://github.com/thesunny/grunt-browserifying
*
* Copyright (c) 2014 Sunny Hirai
* Licensed under the MIT license.
*/
'use strict';
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
jshint: {
all: [
'Gruntfile.js',
'tasks/*.js',
'<%= nodeunit.tests %>',
],
options: {
jshintrc: '.jshintrc',
},
},
// Before generating any new files, remove any previously-created files.
clean: {
tests: ['tmp'],
},
// Configuration to be run (and then tested).
browserifying: {
test: {
options: {
map: {
'aliasMap-1': './example/aliasMappings/aliasMap-1',
'aliasMap-2': './example/aliasMappings/aliasMap-2',
'shim-1': {
path: './example/shims/shim-1',
exports: '$'
},
'shim-2': {
path: './example/shims/shim-2',
exports: '$'
}
},
brfs: true,
watch: true
},
files: {
'./tmp/example.js': ['./example/example-1.coffee', './example/example-2.js']
}
},
simple: {
options: {
watch: false
},
files: {
'./tmp/simple.js': ['./example/simple/alpha']
}
},
glob: {
options: {
watch: false,
},
files: {
'./tmp/glob.js': ['./example/glob/**/*.coffee']
}
}
},
// Unit tests.
nodeunit: {
tests: ['test/*_test.js'],
},
});
// Actually load this plugin's task(s).
grunt.loadTasks('tasks');
// These plugins provide necessary tasks.
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-nodeunit');
// Whenever the "test" task is run, first clean the "tmp" dir, then run this
// plugin's task(s), then test the result.
grunt.registerTask('test', ['clean', 'browserifying:glob', 'nodeunit']); // 'browserifying:simple',
// By default, lint and run all tests.
grunt.registerTask('default', ['jshint', 'test']);
};