Blame view

bower_components/polymer-element-catalog/polybuild.js 1.81 KB
07d13c9c   isisadmin   polymer catalog
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
  /**
   * @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,
      stripExcludes: ['bower_components/hydrolysis/hydrolysis-analyzer.html']
    })
    // 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 pipe = htmlPipe
    // switch between cleaning or minimizing javascript
    .pipe(crush ? uglify : leftAlign)
    // rename files with an infix '.build'
    .pipe(rename, function(path) {
      path.basename += '.build';
    })
    // 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;
  };