forked from lazojs/lazo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gruntfile.js
127 lines (107 loc) · 3.85 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
module.exports = function (grunt) {
var fs = require('fs'),
path = require('path'),
reqConf = JSON.parse(fs.readFileSync('lib/common/resolver/paths.json', 'utf8'));
function getPaths(conf, env) {
var paths = grunt.util._.extend({}, conf.common, (conf[env] || conf.client));
for (var key in paths) {
paths[key] = paths[key].replace('{env}', (env || 'client'));
}
return paths;
}
grunt.registerTask('merge-mocks', 'Merge lazo mocks.', function () {
var dst = grunt.config.get('castle').lazo.options.mocks.baseUrl,
src = './node_modules/lazo-mocks';
fs.readdirSync('./node_modules/lazo-mocks').forEach(function (mock) {
if (path.extname(mock) === '.js') {
grunt.file.copy(path.normalize(src + '/' + mock), path.normalize(dst + '/' + mock));
}
});
});
grunt.initConfig({
requirejs: {
compile: {
options: {
include: reqConf.lib,
paths: getPaths(reqConf),
shim: {
handlebars: {
exports: 'Handlebars'
}
},
map: {
'*': {
'l': '/lib/client/loader.js'
}
},
outFileName: 'lib',
baseUrl: path.resolve('.'),
optimize: 'uglify2',
logLevel: 4,
out: 'lib/optimized/lib.js'
}
}
},
watch: {
test: {
files: ['lib/**/*.*', '!lib/vendor/**/*.*'],
tasks: ['castle'],
options: {
events: ['changed']
}
},
lib: {
files: ['lib/**/*.*', '!lib/**/server/**/*.*', '!lib/vendor/**/*.*'],
tasks: ['requirejs']
}
},
castle: {
lazo: {
options: {
mocks: {
server: {
baseUrl: './test/mocks',
paths: grunt.file.readJSON('./test/mocks/lazo/paths.json')
},
client: {
baseUrl: './test/mocks',
paths: grunt.file.readJSON('./test/mocks/lazo/paths.json')
}
},
specs: {
baseUrl: 'test/specs',
client: 'client/**/*.js',
server: 'server/**/*.js',
common: 'shared/**/*.js',
'client-target': 'test/specs/html'
},
requirejs: {
server: {
baseUrl: '.',
paths: getPaths(reqConf, 'server')
},
client: {
baseUrl: '.',
paths: getPaths(reqConf, 'client')
}
},
reporting: {
dest: 'reports',
src: 'lib',
options: {},
analysis: {
files: ['lib/**/*.js', '!lib/vendor/**']
},
coverage: {
dest: 'lib-cov',
exclude: 'vendor'
}
}
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-requirejs');
grunt.loadNpmTasks('grunt-castle');
};