-
Notifications
You must be signed in to change notification settings - Fork 10
/
Gruntfile.js
105 lines (91 loc) · 3.1 KB
/
Gruntfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
module.exports = function(grunt) {
'use strict';
// catch these here so they don't bite us later when we try to run tasks
var shell = require('shelljs'),
rimraf = require('rimraf'),
bower_cmd = require('bower/lib/util/cmd');
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
coffee: {
compile: {
files: {
'dist/angles.js': ['src/*.coffee']
}
}
},
clean: [ 'dist', 'bower_components' ],
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
my_target: {
files: {
'dist/angles.min.js': 'dist/angles.js'
}
}
},
qunit: {
all: ['test/*.html']
},
});
grunt.registerTask('default', ['coffee', 'uglify', 'install-deps']);
grunt.registerTask('test', ['default', 'qunit']);
grunt.registerTask('real-clean', [ 'clean', 'clean:node_modules']);
grunt.registerTask('clean:node_modules', 'Remove locally installed node modules.', function() {
var filepath = './node_modules';
if(!grunt.file.exists(filepath)) {
return false;
}
if(grunt.file.isPathCwd(filepath)) {
grunt.verbose.error();
grunt.fail.warn('Cannot delete the current working directory.');
return false;
}
else if(!grunt.file.isPathInCwd(filepath)) {
grunt.verbose.error();
grunt.fail.warn('Cannot delete files outside the current working directory.');
return false;
}
try {
rimraf.sync(filepath);
grunt.log.ok();
}
catch(e) {
grunt.log.error();
grunt.fail.warn('Unable to delete "' + filepath + '" file (' + e.message + ').', e);
}
});
grunt.registerTask('install-deps', 'Install all JavaScript dependencies using bower, including optional libraries.', function() {
var done = this.async();
if(!shell.which("bower")) {
console.log("Sorry, this script requires bower.");
exit(1);
}
console.log("Running 'bower install'");
bower_cmd('bower',['install']).then(function() {
console.log("running 'bower install Backbone.localStorage'");
return bower_cmd('bower', ['install', 'Backbone.localStorage']);
}).then(function() {
console.log("running 'bower install FileSaver'");
return bower_cmd('bower', ['install', 'FileSaver']);
}).then(function() {
console.log("Finished installing dependencies");
done();
}).fail(function() {
console.log("Unable to install dependencies");
done();
}).done();
});
grunt.registerTask('demo', 'Install all dependencies and provide a list of demo files', ['default', 'install-deps', 'demo:files' ]);
grunt.registerTask('demo:files', "List available demonstration files.", function() {
console.log("demo/index.html");
console.log("demo/srvValidation.html");
});
grunt.event.on('qunit.spawn', function(url) {
grunt.log.ok("Running test: " + url);
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-coffee');
};