-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgulpfile.js
122 lines (107 loc) · 2.29 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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
var
gulp = require('gulp'),
$ = require('gulp-load-plugins')()
;
var isProduction = true;
var paths = {
scripts: 'src/',
};
var source = {
scripts: [
paths.scripts + 'core.module.js',
// modules
paths.scripts + '**/*.module.js',
paths.scripts + '**/*.js'
],
};
var build = {
dir: './build',
src: {
js: 'src.min.js',
},
vendor: {
js: 'vendor.min.js',
css: 'vendor.min.css',
},
dist: {
js: 'dist.min.js',
}
};
var vendor = {
source: require('./vendor.json'),
};
var cssnanoOpts = {};
var pugOptions = {
basedir: './',
};
var tplCacheOptions = {
root: 'scp/core',
module: 'scp.core',
};
gulp.task('scripts', function () {
return gulp
.src(source.scripts)
.pipe($.jsvalidate())
.pipe($.sourcemaps.init({loadMaps: true}))
.on('error', handleError)
.pipe($.concat(build.src.js))
.pipe($.ngAnnotate())
.on('error', handleError)
.pipe($.uglify({
preserveComments: 'some'
}))
.on('error', handleError)
.pipe($.sourcemaps.write('./'))
.pipe(gulp.dest(build.dir))
;
});
// Build the base script to start the application from vendor assets
gulp.task('vendor', function () {
log('Copying base vendor assets..');
var jsFilter = $.filter('**/*.js', {
restore: true
});
var cssFilter = $.filter('**/*.css', {
restore: true
});
return gulp
.src(vendor.source)
.pipe($.expectFile(vendor.source))
.pipe(jsFilter)
.pipe($.sourcemaps.init({loadMaps: true}))
.pipe($.concat(build.vendor.js))
.pipe(gulp.dest(build.dir))
.pipe(jsFilter.restore())
.pipe(cssFilter)
.pipe($.concat(build.vendor.css))
.pipe($.cssnano(cssnanoOpts))
.pipe($.sourcemaps.write('./'))
.pipe(gulp.dest(build.dir))
.pipe(cssFilter.restore())
;
});
gulp.task('merge', function () {
return gulp
.src([
build.dir +'/'+build.vendor.js,
build.dir +'/'+build.src.js,
])
.pipe($.sourcemaps.init({loadMaps: true}))
.pipe($.concat(build.dist.js))
.pipe($.sourcemaps.write('./'))
.pipe(gulp.dest('./'))
;
});
gulp.task('default', gulp.series([
'scripts',
'vendor',
'merge',
]));
function handleError(err) {
log(err.toString());
this.emit('end');
}
// log to console using
function log(msg) {
$.util.log($.util.colors.blue(msg));
}