-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gruntfile.js
123 lines (120 loc) · 2.65 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){
// load plugins
[
'grunt-cafe-mocha',
'grunt-contrib-jshint',
'grunt-exec',
'grunt-contrib-less',
'grunt-contrib-uglify',
'grunt-contrib-cssmin',
'grunt-hashres',
'grunt-lint-pattern',
].forEach(function(task){
grunt.loadNpmTasks(task);
});
// configure plugins
grunt.initConfig({
cafemocha: {
all: { src: 'qa/tests-*.js', options: { ui: 'tdd' }, }
},
jshint: {
app: ['dcit.js', 'public/js/**/*.js', 'lib/**/*.js',
'models/**/*.js', 'viewModels/**/*.js', 'controllers/**/*.js'],
qa: ['Gruntfile.js', 'public/qa/**/*.js', 'qa/**/*.js'],
},
exec: {
linkchecker: { cmd: 'linkchecker http://localhost:3000 -q --ignore-url=/cart/add --no-warnings' }
},
less: {
development: {
options: {
customFunctions: {
static: function(lessObject, name) {
return 'url("' +
require('./lib/static.js').map(name.value) +
'")';
}
}
},
files: {
'public/css/main.css': 'less/main.less',
'public/css/cart.css': 'less/cart.less',
}
}
},
uglify: {
all: {
files: {
'public/js.min/dcit.min.js': ['public/js/**/*.js']
}
}
},
cssmin: {
combine: {
files: {
'public/css/dcit.css': ['public/css/**/*.css',
'!public/css/dcit*.css']
}
},
minify: {
src: 'public/css/dcit.css',
dest: 'public/css/dcit.min.css',
},
},
hashres: {
options: {
fileNameFormat: '${name}.${hash}.${ext}'
},
all: {
src: [
'public/js.min/dcit.min.js',
'public/css/dcit.min.css',
],
dest: [
'config.js',
]
},
},
lint_pattern: {
view_statics: {
options: {
rules: [
{
pattern: /<link [^>]*href=["'](?!\{\{|(https?:)?\/\/)/,
message: 'Un-mapped static resource found in <link>.'
},
{
pattern: /<script [^>]*src=["'](?!\{\{|(https?:)?\/\/)/,
message: 'Un-mapped static resource found in <script>.'
},
{
pattern: /<img [^>]*src=["'](?!\{\{|(https?:)?\/\/)/,
message: 'Un-mapped static resource found in <img>.'
},
]
},
files: {
src: [ 'views/**/*.handlebars' ]
}
},
css_statics: {
options: {
rules: [
{
pattern: /url\(/,
message: 'Un-mapped static found in LESS property.'
},
]
},
files: {
src: [
'less/**/*.less'
]
}
}
}
});
// register tasks
grunt.registerTask('default', ['cafemocha','jshint','exec', 'lint_pattern']);
grunt.registerTask('static', ['less', 'cssmin', 'uglify', 'hashres']);
};