dimple/Gruntfile.js

172 lines
6.0 KiB
JavaScript
Raw Normal View History

2013-05-21 15:42:17 +04:00
module.exports = function(grunt) {
2013-06-12 18:33:29 +04:00
"use strict";
2013-05-21 15:42:17 +04:00
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
dist: {
src: [
2013-06-12 18:33:29 +04:00
"src/begin.js",
"src/objects/axis/begin.js",
"src/objects/axis/methods/*.js",
"src/objects/axis/end.js",
"src/objects/chart/begin.js",
"src/objects/chart/methods/*.js",
"src/objects/chart/end.js",
"src/objects/color/begin.js",
"src/objects/color/end.js",
"src/objects/eventArgs/begin.js",
"src/objects/eventArgs/end.js",
"src/objects/legend/begin.js",
"src/objects/legend/methods/*.js",
"src/objects/legend/end.js",
"src/objects/series/begin.js",
"src/objects/series/methods/*.js",
"src/objects/series/end.js",
"src/objects/storyboard/begin.js",
"src/objects/storyboard/methods/*.js",
"src/objects/storyboard/end.js",
"src/objects/aggregateMethod/*.js",
"src/objects/plot/*.js",
"src/methods/*.js",
"src/end.js"
],
2013-09-11 22:06:40 +04:00
dest: 'dist/<%= pkg.name %>.v<%= pkg.version %>.js'
2014-01-19 16:53:29 +04:00
},
test: {
src: '<%= concat.dist.src %>',
dest: 'tmp/<%= pkg.name %>.js'
2013-05-21 15:42:17 +04:00
}
},
uglify: {
dist: {
files: {
2013-09-11 22:06:40 +04:00
'dist/<%= pkg.name %>.v<%= pkg.version %>.min.js': ['<%= concat.dist.dest %>']
2013-05-21 15:42:17 +04:00
}
}
2013-06-08 02:31:05 +04:00
},
2013-06-12 18:33:29 +04:00
connect: {
server: {
options: {
port: 3001,
base: '.'
}
}
},
jslint: {
files: [
'Gruntfile.js',
'test/**/*.spec.js',
2013-09-11 22:06:40 +04:00
'dist/<%= pkg.name %>.v<%= pkg.version %>.js'
2013-06-12 18:33:29 +04:00
],
directives: {
browser: true,
nomen: true,
predef: [
'd3',
2013-09-11 22:06:40 +04:00
'module',
'console',
'jasmine',
'dimple'
2013-06-12 18:33:29 +04:00
]
}
2013-09-11 22:06:40 +04:00
},
prop: {
dist: {
src: [
'examples/templates/*.html'
]
},
options: {
dest: 'examples/',
tag: '{version}',
2013-09-12 13:45:02 +04:00
version: 'v<%= pkg.version %>',
2013-09-12 13:53:11 +04:00
header: "<!----------------------------------------------------------------->\n" +
"<!-- AUTOMATICALLY GENERATED CODE - PLEASE EDIT TEMPLATE INSTEAD -->\n" +
"<!----------------------------------------------------------------->\n"
2013-09-11 22:06:40 +04:00
}
2014-01-19 16:53:29 +04:00
},
karma: {
options: {
basepath: '',
frameworks: ['jasmine'],
files: [
2014-01-19 17:39:01 +04:00
'lib/d3.v3.min.js',
2014-01-19 16:53:29 +04:00
'tmp/*.js',
'test/**/*.spec.js',
'test/*.spec.js'
],
reporters: ['progress'],
port: 9876,
colors: true,
browsers: ['PhantomJS']
},
unit: {
singleRun: true
},
continuous: {
2014-01-19 17:41:31 +04:00
background: true
2014-01-19 16:53:29 +04:00
}
},
watch: {
src: {
files: [
2014-01-19 17:41:31 +04:00
'<%= concat.test.src %>'
2014-01-19 16:53:29 +04:00
],
tasks: ['concat:test', 'karma:continuous:run']
},
test: {
files: [
'test/**/*.spec.js',
'test/*.spec.js'
],
tasks: ['karma:continuous:run']
}
2013-06-12 18:33:29 +04:00
}
2013-05-21 15:42:17 +04:00
});
// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
2013-06-08 02:31:05 +04:00
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-qunit');
2013-06-12 18:33:29 +04:00
grunt.loadNpmTasks('grunt-jslint');
2014-01-19 16:53:29 +04:00
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-karma');
2013-05-21 15:42:17 +04:00
2013-09-11 22:06:40 +04:00
// Propogate version into relevant files
grunt.registerMultiTask('prop', 'Propagate Versions.', function() {
var options = this.options(),
outPath = options.dest,
tag = options.tag,
2013-09-12 13:45:02 +04:00
version = options.version,
header = options.header;
grunt.log.writeln("");
grunt.log.writeln("Replacing " + tag + " with " + version);
grunt.log.writeln("------------------------------------------------------");
2013-09-11 22:06:40 +04:00
this.files.forEach(function(f) {
f.src.filter(function(filepath) {
var result = true;
if (!grunt.file.exists(filepath)) {
grunt.log.warn('File "' + filepath + '" not found.');
result = false;
}
return result;
}).map(function(filepath) {
// Read file source.
2013-09-12 13:53:11 +04:00
var src = grunt.file.read(filepath);
2013-09-11 22:06:40 +04:00
// Replace the version
2013-09-12 13:45:02 +04:00
src = src.split(tag).join(version);
2013-09-11 22:06:40 +04:00
// Write the new file
2013-09-12 13:53:11 +04:00
grunt.log.writeln("Creating " + outPath + filepath.substring(filepath.lastIndexOf("/") + 1));
grunt.file.write(outPath + filepath.substring(filepath.lastIndexOf("/") + 1), header + src);
2013-09-11 22:06:40 +04:00
});
});
});
2013-06-12 18:33:29 +04:00
// Default tasks
2014-01-19 17:41:31 +04:00
grunt.registerTask('default', ['concat', 'jslint', 'uglify', 'connect', 'prop']);
2014-01-19 16:53:29 +04:00
grunt.registerTask('test:unit', ['concat:test', 'karma:unit']);
2014-01-19 17:39:01 +04:00
grunt.registerTask('test', ['karma:continuous:start', 'watch']);
2013-05-21 15:42:17 +04:00
};