From 4552e74fa324f69643c5565ff9b8fa0f0023e862 Mon Sep 17 00:00:00 2001 From: Oleh Zasadnyy Date: Tue, 30 May 2017 00:50:29 +0300 Subject: [PATCH] Add better minification --- .travis.yml | 2 +- gulpfile.js | 26 ++++++++++++++++++-------- package.json | 3 ++- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 206d3f4b50..6c2c84deca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,8 +15,8 @@ addons: - g++-4.8 install: - npm install -g bower -- npm install - bower install +- npm install script: echo "Deploying!" before_deploy: npm run build deploy: diff --git a/gulpfile.js b/gulpfile.js index ee27433515..465a8d236d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,22 +3,25 @@ const del = require('del'); const gulp = require('gulp'); const gulpif = require('gulp-if'); -const uglify = require('gulp-uglify'); +const uglifyes = require('uglify-es'); +const composer = require('gulp-uglify/composer'); const cssSlam = require('css-slam').gulp; const mergeStream = require('merge-stream'); const polymerBuild = require('polymer-build'); -const HtmlSplitter = require('polymer-build').HtmlSplitter; const browserSync = require('browser-sync').create(); const history = require('connect-history-api-fallback'); +const HtmlSplitter = polymerBuild.HtmlSplitter; +const PolymerProject = polymerBuild.PolymerProject; +const uglify = composer(uglifyes, console); + const logging = require('plylog'); // logging.setVerbose(); const config = { polymerJsonPath: './polymer.json', build: { - rootDirectory: 'build', - bundled: true + rootDirectory: 'build' }, swPrecacheConfigPath: './sw-precache-config.js', templateData: [ @@ -54,7 +57,7 @@ function build() { const compileStream = template.compile(config, polymerJson) .on('end', () => { - polymerProject = new polymerBuild.PolymerProject(buildPolymerJson); + polymerProject = new PolymerProject(buildPolymerJson); }); return waitFor(compileStream); }) @@ -65,7 +68,7 @@ function build() { const sourcesStream = polymerProject.sources() .pipe(sourcesHtmlSplitter.split()) // splitHtml doesn't split CSS https://github.com/Polymer/polymer-build/issues/32 - // .pipe(gulpif(/\.js$/, uglify())) + .pipe(gulpif(/\.js$/, uglify())) .pipe(gulpif(/\.(html|css)$/, cssSlam())) .pipe(gulpif(/\.html$/, html.minify())) .pipe(gulpif(/\.(png|gif|jpg|svg)$/, images.minify())) @@ -75,7 +78,7 @@ function build() { const dependenciesStream = polymerProject.dependencies() .pipe(dependenciesHtmlSplitter.split()) // Doesn't work for now - // .pipe(gulpif(/\.js$/, uglify())) + .pipe(gulpif(/\.js$/, uglify())) .pipe(gulpif(/\.(html|css)$/, cssSlam())) .pipe(gulpif(/\.html$/, html.minify())) .pipe(dependenciesHtmlSplitter.rejoin()); @@ -85,7 +88,9 @@ function build() { console.log('Analyzing and optimizing...'); }); - buildStream = buildStream.pipe(polymerProject.bundler()); + buildStream = buildStream.pipe(polymerProject.bundler({ + stripComments: true + })); buildStream = buildStream.pipe(gulp.dest(config.build.rootDirectory)); return waitFor(buildStream); }) @@ -109,6 +114,11 @@ function build() { return waitFor(normalizeStream); }) + .then(() => { + return gulp.src(prependPath(config.build.rootDirectory, 'service-worker.js')) + .pipe(uglify()) + .pipe(gulp.dest(config.build.rootDirectory)); + }) .then(() => { console.log('Build complete!'); resolve(); diff --git a/package.json b/package.json index 1ed1995809..5afb8bb73b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "plylog": "^0.5.0", "polymer-build": "^1.5.0", "require-uncached": "^1.0.0", - "sw-precache": "^5.0.0" + "sw-precache": "^5.0.0", + "uglify-es": "^3.0.13" }, "engines": { "node": ">=4.0"