forked from angular-ui/angular-ui-OLDREPO
-
Notifications
You must be signed in to change notification settings - Fork 0
/
grunt.js
131 lines (116 loc) · 4.23 KB
/
grunt.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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
var testacular = require('testacular');
/*global module:false*/
module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-recess');
grunt.loadNpmTasks('grunt-coffee');
// Project configuration.
grunt.initConfig({
builddir: 'build',
pkg: '<json:package.json>',
meta: {
banner: '/**\n' + ' * <%= pkg.description %>\n' +
' * @version v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
' * @link <%= pkg.homepage %>\n' +
' * @license MIT License, http://www.opensource.org/licenses/MIT\n' + ' */'
},
coffee: {
build: {
src: ['common/*.coffee', 'modules/**/*.coffee'],
extension: ".coffee.js"
}
},
concat: {
build: {
src: ['<banner:meta.banner>', 'common/*.js'],
dest: '<%= builddir %>/<%= pkg.name %>.js'
},
ieshiv: {
src: ['<banner:meta.banner>', 'common/ieshiv/*.js'],
dest: '<%= builddir %>/<%= pkg.name %>-ieshiv.js'
}
},
min: {
build: {
src: ['<banner:meta.banner>', '<config:concat.build.dest>'],
dest: '<%= builddir %>/<%= pkg.name %>.min.js'
},
ieshiv: {
src: ['<banner:meta.banner>', '<config:concat.ieshiv.dest>'],
dest: '<%= builddir %>/<%= pkg.name %>-ieshiv.min.js'
}
},
recess: {
build: {
src: ['common/**/*.less'],
dest: '<%= builddir %>/<%= pkg.name %>.css',
options: {
compile: true
}
},
min: {
src: '<config:recess.build.dest>',
dest: '<%= builddir %>/<%= pkg.name %>.min.css',
options: {
compress: true
}
}
},
lint: {
files: ['grunt.js', 'common/**/*.js', 'modules/**/*.js']
},
watch: {
files: ['modules/**/*.coffee', 'modules/**/*.js', 'common/**/*.js', 'templates/**/*.js'],
tasks: 'coffee build test'
}
});
// Default task.
grunt.registerTask('default', 'coffee build test');
grunt.registerTask('build', 'build all or some of the angular-ui modules', function () {
var jsBuildFiles = grunt.config('concat.build.src');
var lessBuildFiles = [];
if (this.args.length > 0) {
this.args.forEach(function(moduleName) {
var modulejs = grunt.file.expandFiles('modules/*/' + moduleName + '/*.js');
var moduleless = grunt.file.expandFiles('modules/*/' + moduleName + '/stylesheets/*.less', 'modules/*/' + moduleName + '/*.less');
jsBuildFiles = jsBuildFiles.concat(modulejs);
lessBuildFiles = lessBuildFiles.concat(moduleless);
});
grunt.config('concat.build.src', jsBuildFiles);
grunt.config('recess.build.src', lessBuildFiles);
} else {
grunt.config('concat.build.src', jsBuildFiles.concat(['modules/*/*/*.js']));
grunt.config('recess.build.src', lessBuildFiles.concat(grunt.config('recess.build.src')));
}
grunt.task.run('concat min recess:build recess:min');
});
grunt.registerTask('dist', 'change dist location', function() {
var dir = this.args[0];
if (dir) { grunt.config('builddir', dir); }
});
grunt.registerTask('server', 'start testacular server', function () {
//Mark the task as async but never call done, so the server stays up
var done = this.async();
testacular.server.start({ configFile: 'test/test-config.js'});
});
grunt.registerTask('test', 'run tests (make sure server task is run first)', function () {
var done = this.async();
grunt.utils.spawn({
cmd: process.platform === 'win32' ? 'testacular.cmd' : 'testacular',
args: process.env.TRAVIS ? ['start', 'test/test-config.js', '--single-run', '--no-auto-watch', '--reporter=dots', '--browsers=Firefox'] : ['run']
}, function (error, result, code) {
if (error) {
grunt.warn("Make sure the testacular server is online: run `grunt server`.\n" +
"Also make sure you have a browser open to http://localhost:8080/.\n" +
error.stdout + error.stderr);
//the testacular runner somehow modifies the files if it errors(??).
//this causes grunt's watch task to re-fire itself constantly,
//unless we wait for a sec
setTimeout(done, 1000);
} else {
grunt.log.write(result.stdout);
done();
}
});
});
};