This repository has been archived by the owner on Mar 13, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 19
/
index.js
70 lines (59 loc) · 1.95 KB
/
index.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
/**
* @license
* Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
//jshint node: true
'use strict';
var crisper = require('gulp-crisper');
var lazypipe = require('lazypipe');
var polyclean = require('polyclean');
var rename = require('gulp-rename');
var vulcanize = require('gulp-vulcanize');
var gutil = require('gulp-util');
var htmlPipe = lazypipe()
// inline html imports, scripts and css
// also remove html comments
.pipe(vulcanize, {
inlineScripts: true,
inlineCss: true,
stripComments: true
})
// remove whitespace from inline css
.pipe(polyclean.cleanCss)
;
// remove javascript whitespace
var leftAlign = polyclean.leftAlignJs;
// minimize javascript with uglifyjs
var uglify = polyclean.uglifyJs;
module.exports = function(opts) {
opts = opts || {};
var crush = opts.maximumCrush;
var suffix = '.build'; //true || undefined
if (opts.suffix === false || opts.suffix === ""){
suffix = "";
} else if (typeof opts.suffix === 'string') {
suffix = '.' + opts.suffix.split('.').join('');
}
var pipe = htmlPipe
// switch between cleaning or minimizing javascript
.pipe(crush ? uglify : leftAlign)
// rename files with an infix '.build'
.pipe(rename, function(path) {
path.basename += suffix;
})
// split the javascript out into `.build.js` for CSP compliance
.pipe(crisper)
()
;
// have to handle errors ourselves, thanks gulp >:(
pipe.on('error', function(error) {
gutil.log(error.toString());
process.exit(1);
});
return pipe;
};