-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGruntfile.js
129 lines (128 loc) · 3.19 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
124
125
126
127
128
129
/*jshint expr: true, strict: false*/
module.exports = function(grunt) {
var ASSETS_DIR = './public/'
, STYLE_DIR = ASSETS_DIR + 'css/'
, LESS_DIR = ASSETS_DIR + 'less/'
, JS_DIR = ASSETS_DIR + 'js/'
, TEST_DIR = 'tests/'
, cssF = STYLE_DIR + 'style.css'
, lessF = LESS_DIR + 'style.less'
, frontendF = JS_DIR + '**/*.js'
, backendF = ['./*.js', './config/*.js']
, testF = TEST_DIR + '_*.js'
, lesscmd = 'node ./node_modules/.bin/lessc --source-map-map-inline --source-map --source-map-rootpath=../less/ ' +
lessF + ' ' + cssF
, karmaCmd = 'node ./node_modules/.bin/karma config/karma.conf.js'
, coverageCmd = 'node ./node_modules/.bin/karma config/test.coverage.js'
, config = {
pkg: grunt.file.readJSON('package.json')
, exec: {
less: lesscmd
, karma: karmaCmd
, coverage: coverageCmd
}
, clean: ['public/compiled']
, jshint: {
options: {
jshintrc: true
}
, frontend: {
files: {
src: [frontendF]
}
}
, backend: {
files: {
src: [backendF]
}
}
, test: {
files: {
src: [testF]
}
}
}
, jscs: {
frontend: {
files: {
src: frontendF
}
}
, backend: {
files: {
src: backendF
}
}
, test: {
files: {
src: testF
}
}
, all: {
files: {
src: [frontendF, backendF, testF]
}
}
, options: {
config: '.jscsrc'
, fix: false
, verbose: true
}
}
, watch: {}
};
grunt.initConfig(config);
grunt.loadNpmTasks('grunt-exec');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-jscs');
grunt.registerTask('verify', ['jshint']);
grunt.registerTask('fix-js', function() {
config.jscs.options.fix = true;
grunt.task.run('jscs:all');
});
grunt.registerTask('_watch', 'config a watch command', function() {
config.watch = {
backend: {
files: backendF
, tasks: ['jshint:backend', 'jscs:backend']
, options: {
spawn: false
}
}
, frontend: {
files: frontendF
, tasks: ['jshint:frontend', 'jscs:frontend']
, options: {
spawn: true
, atBegin: true
}
}
, test: {
files: testF
, tasks: ['jshint:test', 'jscs:test']
}
, less: {
files: [
LESS_DIR + '*.less'
, LESS_DIR + '**/*.less'
, LESS_DIR + '**/**.less'
]
, tasks: ['exec:less']
, options: {
livereload: false
, livereloadOnError: false
, spawn: false
, atBegin: true
}
}
, livereload: {
options: {livereload: true}
, files: [cssF]
}
};
grunt.task.run('watch');
});
grunt.registerTask('default', ['_watch']);
};