From 10ddb7faace0e681301e0bd08b6c0e529474523a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 26 Nov 2017 17:20:55 -0800 Subject: [PATCH] Minify once, reduce build warnings (#692) * Minify once, reduce build warnings * Remove rollup-plugin-uglify * address comment --- gulp/common/gulp-uglify.js | 10 ++++++ gulp/common/transform.js | 6 ++-- gulp/tasks/rollup.js | 69 +++++++++++++++++++++++++++++++++++--- package.json | 1 - rollup.config-es6.js | 48 -------------------------- rollup.config.js | 58 -------------------------------- yarn.lock | 8 +---- 7 files changed, 78 insertions(+), 122 deletions(-) create mode 100644 gulp/common/gulp-uglify.js delete mode 100644 rollup.config-es6.js delete mode 100644 rollup.config.js diff --git a/gulp/common/gulp-uglify.js b/gulp/common/gulp-uglify.js new file mode 100644 index 0000000000..0621515b4b --- /dev/null +++ b/gulp/common/gulp-uglify.js @@ -0,0 +1,10 @@ +/** + * UglifyJS gulp plugin that takes in a boolean to use ES or JS minification. + */ +const composer = require('gulp-uglify/composer'); +const uglifyjs = require('uglify-js'); +const uglifyes = require('uglify-es'); + +module.exports = function gulpUglify(es6, options) { + return composer(es6 ? uglifyes : uglifyjs, console)(options); +}; diff --git a/gulp/common/transform.js b/gulp/common/transform.js index b7b62c7fcc..a5871ea848 100644 --- a/gulp/common/transform.js +++ b/gulp/common/transform.js @@ -1,8 +1,6 @@ const gulpif = require('gulp-if'); -const uglifyjs = require('uglify-js'); -const uglifyes = require('uglify-es'); const babel = require('gulp-babel'); -const composer = require('gulp-uglify/composer'); +const uglify = require('./gulp-uglify.js'); const { gulp: cssSlam } = require('css-slam'); const htmlMinifier = require('gulp-html-minifier'); const { HtmlSplitter } = require('polymer-build'); @@ -19,7 +17,7 @@ module.exports.minifyStream = function (stream, es6) { ['es2015', { modules: false }] ] }))), - gulpif(/\.js$/, composer(es6 ? uglifyes : uglifyjs, console)({ sourceMap: false })), + gulpif(/\.js$/, uglify(es6, { sourceMap: false })), gulpif(/\.css$/, cssSlam()), gulpif(/\.html$/, cssSlam()), gulpif(/\.html$/, htmlMinifier({ diff --git a/gulp/tasks/rollup.js b/gulp/tasks/rollup.js index c4d36474aa..7bd6b7fd22 100644 --- a/gulp/tasks/rollup.js +++ b/gulp/tasks/rollup.js @@ -1,14 +1,73 @@ const gulp = require('gulp'); const rollupEach = require('gulp-rollup-each'); -const rollupConfig = require('../../rollup.config'); -const rollupConfigEs6 = require('../../rollup.config-es6'); +const commonjs = require('rollup-plugin-commonjs'); +const nodeResolve = require('rollup-plugin-node-resolve'); +const replace = require('rollup-plugin-replace'); +const babel = require('rollup-plugin-babel'); +const uglify = require('../common/gulp-uglify.js'); + +const DEV = !!JSON.parse(process.env.BUILD_DEV || 'true'); +const DEMO = !!JSON.parse(process.env.BUILD_DEMO || 'false'); + +function getRollupInputOptions(es6) { + const babelOpts = { + babelrc: false, + plugins: [ + 'external-helpers', + 'transform-object-rest-spread', + [ + 'transform-react-jsx', + { + pragma: 'h' + } + ], + ] + }; + + if (!es6) { + babelOpts.presets = [ + [ + 'es2015', + { + modules: false + } + ] + ]; + } + + return { + plugins: [ + babel(babelOpts), + + nodeResolve({ + jsnext: true, + main: true, + }), + + commonjs(), + + replace({ + values: { + __DEV__: JSON.stringify(DEV), + __DEMO__: JSON.stringify(DEMO), + __BUILD__: JSON.stringify(es6 ? 'latest' : 'es5'), + }, + }), + ], + }; +} + +const rollupOutputOptions = { + format: 'iife', + exports: 'none', +}; gulp.task('run_rollup_es5', () => gulp.src([ 'js/core.js', 'js/compatibility.js', 'demo_data/demo_data.js', ]) - .pipe(rollupEach(rollupConfig, rollupConfig)) + .pipe(rollupEach(getRollupInputOptions(/* es6= */ false), rollupOutputOptions)) .pipe(gulp.dest('build-temp-es5'))); gulp.task('run_rollup', () => gulp.src([ @@ -18,7 +77,7 @@ gulp.task('run_rollup', () => gulp.src([ 'js/script-editor/script-editor.js', 'demo_data/demo_data.js', ]) - .pipe(rollupEach(rollupConfigEs6, rollupConfigEs6)) + .pipe(rollupEach(getRollupInputOptions(/* es6= */ true), rollupOutputOptions)) .pipe(gulp.dest('build-temp'))); gulp.task('ru_all_es5', ['run_rollup_es5'], () => { @@ -26,6 +85,7 @@ gulp.task('ru_all_es5', ['run_rollup_es5'], () => { 'build-temp-es5/core.js', 'build-temp-es5/compatibility.js', ]) + .pipe(uglify(/* es6= */ false, { sourceMap: false })) .pipe(gulp.dest('build-es5/')); }); @@ -33,6 +93,7 @@ gulp.task('ru_all', ['run_rollup'], () => { gulp.src([ 'build-temp/core.js', ]) + .pipe(uglify(/* es6= */ true, { sourceMap: false })) .pipe(gulp.dest('build/')); }); diff --git a/package.json b/package.json index 33b1eff398..1bba80db6a 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "rollup-plugin-commonjs": "^8.2.6", "rollup-plugin-node-resolve": "^3.0.0", "rollup-plugin-replace": "^2.0.0", - "rollup-plugin-uglify": "^2.0.1", "rollup-watch": "^4.3.1", "run-sequence": "^2.2.0", "sw-precache": "^5.2.0", diff --git a/rollup.config-es6.js b/rollup.config-es6.js deleted file mode 100644 index 32435d6aae..0000000000 --- a/rollup.config-es6.js +++ /dev/null @@ -1,48 +0,0 @@ -const nodeResolve = require('rollup-plugin-node-resolve'); -const replace = require('rollup-plugin-replace'); -const babel = require('rollup-plugin-babel'); -const uglify = require('rollup-plugin-uglify'); -const { minify } = require('uglify-es'); - -const DEV = !!JSON.parse(process.env.BUILD_DEV || 'true'); -const DEMO = !!JSON.parse(process.env.BUILD_DEMO || 'false'); - -const plugins = [ - babel({ - babelrc: false, - plugins: [ - 'external-helpers', - 'transform-object-rest-spread', - [ - 'transform-react-jsx', - { - pragma: 'h' - } - ], - ] - }), - - nodeResolve({ - jsnext: true, - main: true, - }), - - replace({ - values: { - __DEV__: JSON.stringify(DEV), - __DEMO__: JSON.stringify(DEMO), - __BUILD__: JSON.stringify('latest'), - }, - }), -]; - -if (!DEV) { - plugins.push(uglify({}, minify)); -} - -module.exports = { - format: 'iife', - exports: 'none', - treeshake: true, - plugins, -}; diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index cdc0ddcdd5..0000000000 --- a/rollup.config.js +++ /dev/null @@ -1,58 +0,0 @@ -const commonjs = require('rollup-plugin-commonjs'); -const nodeResolve = require('rollup-plugin-node-resolve'); -const replace = require('rollup-plugin-replace'); -const babel = require('rollup-plugin-babel'); -const uglify = require('rollup-plugin-uglify'); - -const DEV = !!JSON.parse(process.env.BUILD_DEV || 'true'); -const DEMO = !!JSON.parse(process.env.BUILD_DEMO || 'false'); - -const plugins = [ - babel({ - babelrc: false, - presets: [ - [ - 'es2015', - { - modules: false - } - ] - ], - plugins: [ - 'external-helpers', - 'transform-object-rest-spread', - [ - 'transform-react-jsx', - { - pragma: 'h' - } - ], - ] - }), - - nodeResolve({ - jsnext: true, - main: true, - }), - - commonjs(), - - replace({ - values: { - __DEV__: JSON.stringify(DEV), - __DEMO__: JSON.stringify(DEMO), - __BUILD__: JSON.stringify('es5'), - }, - }), -]; - -if (!DEV) { - plugins.push(uglify()); -} - -module.exports = { - format: 'iife', - exports: 'none', - treeshake: true, - plugins, -}; diff --git a/yarn.lock b/yarn.lock index af7748e03d..213d5f46f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6802,12 +6802,6 @@ rollup-plugin-replace@^2.0.0: minimatch "^3.0.2" rollup-pluginutils "^2.0.1" -rollup-plugin-uglify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-2.0.1.tgz#67b37ad1efdafbd83af4c36b40c189ee4866c969" - dependencies: - uglify-js "^3.0.9" - rollup-pluginutils@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" @@ -7835,7 +7829,7 @@ uglify-js@3.1.x: commander "~2.11.0" source-map "~0.5.1" -uglify-js@^3.0.5, uglify-js@^3.0.9: +uglify-js@^3.0.5: version "3.0.28" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.28.tgz#96b8495f0272944787b5843a1679aa326640d5f7" dependencies: