You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2019/06/07 17:02:47 UTC

[nifi-fds] branch master updated: [NIFI-6300] gzip compress assets

This is an automated email from the ASF dual-hosted git repository.

mcgilman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-fds.git


The following commit(s) were added to refs/heads/master by this push:
     new 75825b9  [NIFI-6300] gzip compress assets
75825b9 is described below

commit 75825b950d56947ce0b45899926d9bd969a110c7
Author: Scott Aslan <sc...@gmail.com>
AuthorDate: Wed Jun 5 22:46:46 2019 -0400

    [NIFI-6300] gzip compress assets
    
    This closes #23
---
 package-lock.json | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 package.json      |   7 ++-
 webpack.common.js |   6 +++
 webpack.dev.js    |  11 ++--
 webpack.prod.js   |  14 ++++-
 5 files changed, 189 insertions(+), 8 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 561dba8..2381f93 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1376,6 +1376,12 @@
             "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
             "dev": true
         },
+        "acorn-walk": {
+            "version": "6.1.1",
+            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
+            "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==",
+            "dev": true
+        },
         "after": {
             "version": "0.8.2",
             "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
@@ -2096,6 +2102,18 @@
                 "callsite": "1.0.0"
             }
         },
+        "bfj": {
+            "version": "6.1.1",
+            "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz",
+            "integrity": "sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ==",
+            "dev": true,
+            "requires": {
+                "bluebird": "3.5.1",
+                "check-types": "7.4.0",
+                "hoopy": "0.1.4",
+                "tryer": "1.0.1"
+            }
+        },
         "big.js": {
             "version": "5.2.2",
             "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@@ -2639,6 +2657,12 @@
             "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
             "dev": true
         },
+        "check-types": {
+            "version": "7.4.0",
+            "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
+            "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==",
+            "dev": true
+        },
         "chokidar": {
             "version": "2.1.5",
             "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz",
@@ -3005,6 +3029,20 @@
                 }
             }
         },
+        "compression-webpack-plugin": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-2.0.0.tgz",
+            "integrity": "sha512-bDgd7oTUZC8EkRx8j0sjyCfeiO+e5sFcfgaFcjVhfQf5lLya7oY2BczxcJ7IUuVjz5m6fy8IECFmVFew3xLk8Q==",
+            "dev": true,
+            "requires": {
+                "cacache": "11.3.2",
+                "find-cache-dir": "2.1.0",
+                "neo-async": "2.6.0",
+                "schema-utils": "1.0.0",
+                "serialize-javascript": "1.6.1",
+                "webpack-sources": "1.3.0"
+            }
+        },
         "concat-map": {
             "version": "0.0.1",
             "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -4101,6 +4139,12 @@
                 }
             }
         },
+        "duplexer": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+            "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+            "dev": true
+        },
         "duplexify": {
             "version": "3.7.1",
             "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
@@ -4149,6 +4193,12 @@
             "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
             "dev": true
         },
+        "ejs": {
+            "version": "2.6.1",
+            "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
+            "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
+            "dev": true
+        },
         "electron-to-chromium": {
             "version": "1.3.124",
             "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz",
@@ -5356,6 +5406,12 @@
                 "minimatch": "3.0.4"
             }
         },
+        "filesize": {
+            "version": "3.6.1",
+            "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
+            "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+            "dev": true
+        },
         "fill-range": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -6650,6 +6706,24 @@
             "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=",
             "dev": true
         },
+        "gzip-size": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.0.tgz",
+            "integrity": "sha512-wfSnvypBDRW94v5W3ckvvz/zFUNdJ81VgOP6tE4bPpRUcc0wGqU+y0eZjJEvKxwubJFix6P84sE8M51YWLT7rQ==",
+            "dev": true,
+            "requires": {
+                "duplexer": "0.1.1",
+                "pify": "4.0.1"
+            },
+            "dependencies": {
+                "pify": {
+                    "version": "4.0.1",
+                    "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+                    "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+                    "dev": true
+                }
+            }
+        },
         "hammerjs": {
             "version": "2.0.8",
             "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
@@ -6911,6 +6985,12 @@
             "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
             "dev": true
         },
+        "hoopy": {
+            "version": "0.1.4",
+            "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
+            "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
+            "dev": true
+        },
         "hosted-git-info": {
             "version": "2.6.0",
             "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
@@ -15255,6 +15335,12 @@
                 }
             }
         },
+        "tryer": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
+            "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
+            "dev": true
+        },
         "ts-loader": {
             "version": "5.3.3",
             "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.3.tgz",
@@ -15985,6 +16071,79 @@
                 }
             }
         },
+        "webpack-bundle-analyzer": {
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz",
+            "integrity": "sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==",
+            "dev": true,
+            "requires": {
+                "acorn": "6.1.1",
+                "acorn-walk": "6.1.1",
+                "bfj": "6.1.1",
+                "chalk": "2.4.2",
+                "commander": "2.20.0",
+                "ejs": "2.6.1",
+                "express": "4.16.4",
+                "filesize": "3.6.1",
+                "gzip-size": "5.1.0",
+                "lodash": "4.17.10",
+                "mkdirp": "0.5.1",
+                "opener": "1.5.1",
+                "ws": "6.2.1"
+            },
+            "dependencies": {
+                "ansi-styles": {
+                    "version": "3.2.1",
+                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+                    "dev": true,
+                    "requires": {
+                        "color-convert": "1.9.3"
+                    }
+                },
+                "chalk": {
+                    "version": "2.4.2",
+                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+                    "dev": true,
+                    "requires": {
+                        "ansi-styles": "3.2.1",
+                        "escape-string-regexp": "1.0.5",
+                        "supports-color": "5.5.0"
+                    }
+                },
+                "has-flag": {
+                    "version": "3.0.0",
+                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+                    "dev": true
+                },
+                "opener": {
+                    "version": "1.5.1",
+                    "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
+                    "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==",
+                    "dev": true
+                },
+                "supports-color": {
+                    "version": "5.5.0",
+                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+                    "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+                    "dev": true,
+                    "requires": {
+                        "has-flag": "3.0.0"
+                    }
+                },
+                "ws": {
+                    "version": "6.2.1",
+                    "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+                    "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+                    "dev": true,
+                    "requires": {
+                        "async-limiter": "1.0.0"
+                    }
+                }
+            }
+        },
         "webpack-cli": {
             "version": "3.3.0",
             "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.0.tgz",
diff --git a/package.json b/package.json
index 7c4c414..085acad 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
     "name": "nifi-fds",
     "version": "0.1.0",
     "scripts": {
-        "start": "./node_modules/http-server/bin/http-server -p 28080 .",
+        "start": "./node_modules/http-server/bin/http-server --gzip -p 28080 .",
         "build:webapp:bundle:development": "npm run webpack:development",
         "build:webapp:bundle:production": "npm run webpack:production",
         "clean:install": "bash ./scripts/clean-install",
@@ -27,8 +27,9 @@
         "test": "karma start karma.conf.js --single-run",
         "test:dev": "karma start karma.conf.js",
         "watch": "npm run webpack:development && ./node_modules/.bin/webpack-dev-server --config webpack.dev.js",
+        "webpack:analyze": "./node_modules/.bin/webpack-bundle-analyzer webpack-build-log.json ./",
         "webpack:development": "./node_modules/.bin/webpack --config webpack.dev.js",
-        "webpack:production": "npm run lint && ./node_modules/.bin/webpack --config webpack.prod.js",
+        "webpack:production": "npm run lint && ./node_modules/.bin/webpack --config webpack.prod.js --json --progress --profile > webpack-build-log.json",
         "eslint": "./node_modules/.bin/eslint './webapp/**/*.js' './platform/**/*.js'",
         "stylelint": "./node_modules/.bin/stylelint './webapp/theming/**/*.scss' './platform/**/*.scss'",
         "lint": "npm run eslint && npm run stylelint"
@@ -91,6 +92,7 @@
         "babel-loader": "8.0.5",
         "babel-polyfill": "6.26.0",
         "cache-loader": "2.0.1",
+        "compression-webpack-plugin": "2.0.0",
         "css-loader": "2.1.1",
         "dtsgenerator": "2.0.6",
         "eslint": "5.14.1",
@@ -131,6 +133,7 @@
         "ts-loader": "5.3.3",
         "typescript": "3.3.4000",
         "webpack": "4.29.6",
+        "webpack-bundle-analyzer": "3.3.2",
         "webpack-cli": "3.3.0",
         "webpack-dev-server": "3.3.1",
         "webpack-fix-style-only-entries": "0.2.1",
diff --git a/webpack.common.js b/webpack.common.js
index 37f6867..728323f 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -22,6 +22,7 @@ const FixStyleOnlyEntriesPlugin = require('webpack-fix-style-only-entries');
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 const HtmlWebpackPlugin = require('html-webpack-plugin');
 const loaders = require('./webpack.loader');
+const CompressionPlugin = require('compression-webpack-plugin');
 
 module.exports = {
     // Deployment target
@@ -100,6 +101,11 @@ module.exports = {
         new HtmlWebpackPlugin({
             template: 'webapp/template.html',
             filename: 'index.html'
+        }),
+
+        new CompressionPlugin({
+            algorithm: 'gzip',
+            test: /\.min.js$|\.min.css$|runtime.js$/
         })
     ]
 };
diff --git a/webpack.dev.js b/webpack.dev.js
index 4b819ff..f80fb80 100644
--- a/webpack.dev.js
+++ b/webpack.dev.js
@@ -45,6 +45,9 @@ module.exports = merge(commonConfig, {
         // Enable Hot Module Replacement feature
         hot: true,
 
+        // Enable gzip compression for everything served
+        compress: true,
+
         // The filename that is considered the index file.
         index: path.join(__dirname, 'index.html'),
 
@@ -69,17 +72,17 @@ module.exports = merge(commonConfig, {
                 const licTextArray = modules.map((lic) => {
                     if (lic.licenseText && lic.licenseId) {
                         const license = lic.licenseText.replace(/\n/gm, '\n\t');
-                        const licText =`This product bundles '${lic.packageJson.name}' which is available under a(n) ${lic.licenseId} license.\n\n\t${license}`;
+                        const licText = `This product bundles '${lic.packageJson.name}' which is available under a(n) ${lic.licenseId} license.\n\n\t${license}`;
 
                         return licText;
                     } else {
                         console.log('\n**********************\n');
                         console.log(lic.packageJson);
                         if (lic.packageJson.license) {
-                            const missingLicenseText = `*** No license text found ***\n`
-                            const licText =`This product bundles '${lic.packageJson.name}' which is available under a(n) ${lic.packageJson.license} license.\n\t${missingLicenseText}`;
+                            const missingLicenseText = `*** No license text found ***\n`;
+                            const licText = `This product bundles '${lic.packageJson.name}' which is available under a(n) ${lic.packageJson.license} license.\n\t${missingLicenseText}`;
 
-                            return licText
+                            return licText;
                         } else {
                             return `\n\n!!! No license information found for ${lic.packageJson.name} !!!\n\n`;
                         }
diff --git a/webpack.prod.js b/webpack.prod.js
index 299dc08..72a4aca 100644
--- a/webpack.prod.js
+++ b/webpack.prod.js
@@ -18,6 +18,7 @@
 const merge = require('webpack-merge');
 const TerserJSPlugin = require('terser-webpack-plugin');
 const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
+const cssnano = require('cssnano');
 
 const commonConfig = require('./webpack.common');
 
@@ -29,12 +30,21 @@ module.exports = merge(commonConfig, {
     devtool: 'source-map',
 
     optimization: {
+        noEmitOnErrors: true,
         minimizer: [
             // Minify JavaScript
             new TerserJSPlugin({}),
 
             // Minify CSS
-            new OptimizeCSSAssetsPlugin({})
+            new OptimizeCSSAssetsPlugin({
+                cssProcessor: cssnano,
+                cssProcessorOptions: {
+                    discardComments: {
+                        removeAll: true
+                    }
+                },
+                canPrint: false
+            })
         ],
-    },
+    }
 });