-
Notifications
You must be signed in to change notification settings - Fork 1
/
bundle.js
113 lines (94 loc) · 2.95 KB
/
bundle.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
var gulp = require('gulp');
var jspm = require('jspm');
var fs = require('fs');
var shell = require('child-process-promise');
var filesize = require('filesize');
var gzipSize = require('gzip-size');
var uglify = require('gulp-uglify');
var dirs = gulp.pkg.demo.directories;
/**
* Bundle aurelia-framework
*/
gulp.task('demo-bundle', function (done) {
var distFile = 'aurelia.js';
var outputFile = dirs.build+'/app/' + distFile;
var cmd = [
'aurelia-bootstrapper',
'aurelia-http-client',
'aurelia-dependency-injection',
'aurelia-framework',
'aurelia-router',
'npm:core-js',
'github:aurelia/metadata@0.7.0',
'github:aurelia/task-queue@0.6.0',
'github:aurelia/event-aggregator@0.6.0',
'github:aurelia/templating@0.13.11',
'github:aurelia/history@0.6.0',
'github:aurelia/history-browser@0.6.0',
'github:aurelia/event-aggregator@0.6.0',
'github:aurelia/templating-router@0.14.0',
'github:aurelia/templating-resources@0.13.0',
'github:aurelia/templating-binding@0.13.0',
'github:aurelia/binding@0.8.2',
'github:aurelia/loader-default@0.9.0'
].join(' + ');
jspm.bundle(cmd,distFile,{inject:true,minify:true}).then(function(){
fs.rename(distFile, outputFile, function(){
showStats(outputFile);
done();
});
});
});
/**
* Bundle application and vendor files.
*/
gulp.task('demo-bundle-app', function (done) {
var distFile = 'app-bundle.js';
var outputFile = dirs.build+'/app/' + distFile;
if(fs.existsSync(outputFile)) fs.unlinkSync(outputFile);
var cmd = "**/* - aurelia";
jspm.bundle(cmd,distFile,{inject:true,minify:true}).then(function(){
fs.rename(distFile, outputFile, function(){
showStats(outputFile);
done();
});
});
});
/**
* Uglify all js files in the dist directory
*/
gulp.task('demo-uglify-dist', function() {
return gulp.src(dirs.build+'/app/**/*.js')
.pipe(uglify())
.pipe(gulp.dest(dirs.build+'/app'));
});
/**
* Unbundle everything and user separate files again
*/
gulp.task('demo-unbundle', function () {
return shell.exec('jspm unbundle');
});
/**
* Show filesize statistics for generated bundle files.
*
* @param file file to show statistics for
*/
function showStats(file) {
if(!fs.existsSync(file)) return null;
var stats = fs.statSync(file);
var cssFile = file.substr(0,file.lastIndexOf("."))+".css";
var cssExists = fs.existsSync(cssFile);
var cssStats;
if(cssExists) cssStats = fs.statSync(cssFile);
console.log("=============== REPORT ================");
if(cssExists) console.log("Javascript Bundle");
console.log("minified: " + filesize(stats.size));
console.log("gzipped: " + filesize(gzipSize.sync(fs.readFileSync(file))));
if(cssExists) {
console.log("");
console.log("CSS Bundle");
console.log("minified: " + filesize(cssStats.size));
console.log("gzipped: " + filesize(gzipSize.sync(fs.readFileSync(cssFile))));
}
console.log("=======================================");
}