-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.js
103 lines (91 loc) · 3.5 KB
/
gulpfile.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
var gulp = require('gulp'),
jscs = require('gulp-jscs'),
jshint = require('gulp-jshint'),
amdOptimize = require('amd-optimize'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
inject = require('gulp-inject'),
shell = require('gulp-shell');
gulp.task('lint', function() {
return gulp.src('src/**/*.js')
.pipe(jscs({ configPath: 'build/jscsrc.json' }))
.pipe(jshint({ configPath: 'build/jshintrc.json' }));
});
gulp.task('public', function() {
return gulp.src(['src/**/*', 'src/.htaccess'])
.pipe(gulp.dest('dist/'));
});
gulp.task('inject', ['public'], function() {
return gulp.src('dist/index.html')
.pipe(inject(gulp.src(['dist/templates/*.tpl', 'dist/data/*.json', 'dist/js/utils/analytics.js']), {
removeTags: true,
transform: function(filePath, file) {
var fileName = filePath.replace(/^\/(.+\/)*(.+)\.(.+)$/, '$2');
fileExt = filePath.replace(/^\/(.+\/)*(.+)\.(.+)$/, '$3');
switch (fileExt) {
case 'tpl': return '<script id="' + fileName + '" type="text/template">' + file.contents.toString('utf8') + '</script>';
case 'json': return '<script>var ' + fileName + 'EmbedData = ' + file.contents.toString('utf8') + ';</script>';
case 'js': return '<script>' + file.contents.toString('utf8') + '</script>';
}
}
})).pipe(gulp.dest('dist/'));
});
gulp.task('compile', ['public', 'inject'], function() {
gulp.src('dist/assets/require.js').pipe(gulp.dest('dist/'));
return gulp.src('dist/{js,assets}/**/*.js', { base: 'dist/js' })
.pipe(amdOptimize('bootstrap', { configFile: 'build/requirejsrc.js' }))
.pipe(concat('app.js'))
.pipe(gulp.dest('dist/'));
});
gulp.task('concat:js', function() {
return gulp.src(['dist/**/*.js', '!dist/js/utils/*.js'])
.pipe(concat('app.js'))
.pipe(gulp.dest('dist/'));
});
gulp.task('concat:css', function() {
return gulp.src('dist/**/*.css')
.pipe(concat('app.css'))
.pipe(gulp.dest('dist/'));
});
gulp.task('uglify:js', function() {
return gulp.src('dist/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('dist/'));
});
gulp.task('assets', function() {
return gulp.src([
'bower_components/leaflet/dist/leaflet.css',
'bower_components/Leaflet.label/dist/leaflet.label.css',
'bower_components/requirejs/require.js',
'bower_components/backbone/backbone.js',
'bower_components/jquery/dist/jquery.min.js',
'bower_components/leaflet/dist/leaflet.js',
'bower_components/jquery-ui/jquery-ui.min.js',
'bower_components/leaflet.hardbounds/lib/leaflet.hardbounds.js',
'bower_components/Leaflet.label/dist/leaflet.label.js',
'bower_components/rrose/rrose-src.js',
'bower_components/rrose/leaflet.rrose.css',
'bower_components/underscore/underscore-min.js',
'bower_components/tinyscrollbar/lib/jquery.tinyscrollbar.min.js',
'bower_components/clipboard/dist/clipboard.min.js'
]).pipe(gulp.dest('dist/assets/'));
});
gulp.task('data', function() {
return gulp.src('data/*/*/mapdata.json')
.pipe(gulp.dest('dist/maps/'));
});
gulp.task('tiles', function() {
return gulp.src('tiles/*/*/{tiles/**/*,minimap.jpg}')
.pipe(gulp.dest('dist/maps/'));
});
gulp.task('resources', function() {
gulp.src('resources/resources.json')
.pipe(gulp.dest('dist/data/'));
return gulp.src('resources/resources/*.jpg')
.pipe(gulp.dest('dist/img/resources/'));
});
gulp.task('init', ['public', 'assets', 'update']);
gulp.task('build', [/*'lint',*/ 'compile']);
gulp.task('update', ['data', 'tiles', 'resources']);
//gulp.task('optimize', ['uglify', 'concat']);
//gulp.task('production', ['build', 'optimize', 'deploy']);