-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGruntfile.js
123 lines (119 loc) · 3.74 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
module.exports = function(grunt) {
var rename = function(dest, src) {
var f = src.substr(0, src.lastIndexOf('.'));
return dest + f + '.min.js';
};
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
clean: ["build", "dist"],
copy: {
libs: {
external_libs: 'build/js/lib/',
files: [
{expand: true, flatten: true, src: ['public_html/assets/data/*.json'], dest: 'dist/assets/data/', filter: 'isFile'},
{expand: true, flatten: true, src: ['public_html/assets/img/*.png'], dest: 'dist/img', filter: 'isFile'},
{expand: true, flatten: true, src: ['public_html/js/libs/**/*.js', '!public_html/js/libs/**/*.min*.js'], dest: '<%= copy.libs.external_libs %>', filter: 'isFile'}
]
}
},
concat: {
options: {
separator: ';'
},
js: {
src: ['public_html/assets/js/**/*.js'],
dest: 'build/js/app/<%= pkg.name %>.js'
},
css: {
options: {
separator: '\n',
},
src: ['public_html/assets/css/**/*.css'],
dest: 'build/css/app/<%= pkg.name %>.css'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
dist: {
files: [
{expand: true, flatten: true, src: ['<%= copy.libs.external_libs %>/*.js'], dest: 'dist/js/', rename: rename, filter: 'isFile'},
{expand: true, flatten: true, src: ['<%= concat.js.dest %>'], dest: 'dist/js/', rename: rename, filter: 'isFile'}
]
}
},
cssmin: {
combine: {
files: {
'dist/css/<%= pkg.name %>.min.css': ['<%= concat.css.dest %>']
}
}
},
targethtml: {
dist: {
files: {
'dist/index.html': 'public_html/index.html',
'dist/council.html': 'public_html/council.html'
}
}
},
jshint: {
files: ['gruntfile.js', 'public_html/assets/js/**/*.js', 'test/unit/**/*.js'],
options: {
globalstrict: true,
jQuery: true,
// options here to override JSHint defaults
globals: {
jQuery: true,
console: true,
module: true,
document: true,
globalstrict: true
}
}
},
jasmine: {
pivotal: {
src: ['public_html/js/libs/**/*.js', 'public_html/assets/**/*.js'],
options: {
specs: 'test/unit/**/*.js',
// vendor: 'test/lib/jasmine/jasmine-jquery.js',
vendor: ['public_html/js/libs/jquery-1.9.1/jquery.js', 'test/lib/jasmine/jasmine-jquery.js', 'test/lib/jasmine-jstd-adapter/prepareForGrunt.js'],
helpers: 'spec/*Helper.js'
}
}
},
connect: {
dist: {
options: {
port: 9001,
base: 'dist'
}
}
},
'gh-pages': {
options: {
base: 'dist'
},
src: ['**/*']
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-targethtml');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-rsync');
grunt.loadNpmTasks('grunt-gh-pages');
grunt.registerTask('test', ['jshint', 'jasmine']);
grunt.registerTask('default', ['jshint', 'jasmine', 'concat:js', 'uglify']);
grunt.registerTask('build', ['clean', 'copy:libs', 'concat:js', 'uglify', 'concat:css', 'cssmin', 'targethtml:dist']);
grunt.registerTask('deploy', ['build', 'gh-pages']);
// Travis CI task.
grunt.registerTask('travis', 'jasmine');
};