-
Notifications
You must be signed in to change notification settings - Fork 5
/
Gruntfile.js
140 lines (134 loc) · 3.44 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
130
131
132
133
134
135
136
137
138
139
140
// Invoke 'strict' JavaScript mode
'use strict';
// Define the Grunt configuration method
module.exports = function(grunt) {
// Initialize Grunt configuraiton
grunt.initConfig({
// Configure the grunt-env task
env: {
test: {
NODE_ENV: 'test'
},
dev: {
NODE_ENV: 'development'
}
},
// Configure the grunt-nodemon task
nodemon: {
dev: {
script: 'server.js',
options: {
ext: 'js,html',
watch: ['server.js', 'config/**/*.js', 'app/**/*.js']
}
},
debug: {
script: 'server.js',
options: {
nodeArgs: ['--debug'],
ext: 'js,html',
watch: ['server.js', 'config/**/*.js', 'app/**/*.js']
}
}
},
// Configure the grunt-mocha-test task
mochaTest: {
src: 'app/tests/**/*.js',
options: {
reporter: 'spec'
}
},
// Configure the grunt-karma task
karma: {
unit: {
configFile: 'karma.conf.js'
}
},
// Configure the grunt-protractor-runner task
protractor: {
e2e: {
options: {
configFile: 'protractor.conf.js'
}
}
},
// Configure the grunt-contrib-jshint task
jshint: {
all: {
src: ['server.js', 'config/**/*.js', 'app/**/*.js', 'public/js/*.js', 'public/modules/**/*.js'],
options: {
node: true,
predef: [
"define",
"require",
"exports",
"module",
"describe",
"before",
"beforeEach",
"after",
"afterEach",
"it",
"inject",
"expect"
]
}
}
},
// Configure the grunt-contrib-csslint task
csslint: {
all: {
src: 'public/modules/**/*.css'
}
},
// Configure the grunt-contrib-watch task
watch: {
js: {
files: ['server.js', 'config/**/*.js', 'app/**/*.js', 'public/js/*.js', 'public/modules/**/*.js'],
tasks: ['jshint']
},
css: {
files: 'public/modules/**/*.css',
tasks: ['csslint']
}
},
// Configure the grunt-concurrent task
concurrent: {
dev: {
tasks: ['nodemon', 'watch'],
options: {
logConcurrentOutput: true
}
},
debug: {
tasks: ['nodemon:debug', 'watch', 'node-inspector'],
options: {
logConcurrentOutput: true
}
}
},
// Configure the grunt-node-inspector task
'node-inspector': {
debug: {}
}
});
// Load the external Grunt tasks
grunt.loadNpmTasks('grunt-env');
grunt.loadNpmTasks('grunt-nodemon');
grunt.loadNpmTasks('grunt-mocha-test');
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-protractor-runner');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-node-inspector');
// Create the 'default' Grunt task
grunt.registerTask('default', ['env:dev', 'lint', 'concurrent:dev']);
// Create the 'debug' Grunt task
grunt.registerTask('debug', ['env:dev', 'lint', 'concurrent:debug']);
// Create the 'test' Grunt task
grunt.registerTask('test', ['env:test', 'mochaTest', 'karma', 'protractor']);
// Create the 'lint' Grunt task
grunt.registerTask('lint', ['jshint', 'csslint']);
};