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
+ })
],
- },
+ }
});