This is an automated email from the ASF dual-hosted git repository.
scottyaslan 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 37111a3 [NIFI-6397] - UI - isolate webpack loaders used specifically
for code coverage purposes
37111a3 is described below
commit 37111a36f600818e0a3f05d21999b173b1d1d32e
Author: Rob Fellows <[email protected]>
AuthorDate: Mon Jul 1 09:10:49 2019 -0400
[NIFI-6397] - UI - isolate webpack loaders used specifically for code
coverage purposes
This closes #33
Signed-off-by: Scott Aslan <[email protected]>
---
.gitignore | 2 +-
package-lock.json | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
package.json | 1 +
webpack.common.js | 2 -
webpack.dev.js | 15 ++--
webpack.karma.js | 4 +-
webpack.loader.js | 30 ++++---
webpack.prod.js | 8 ++
8 files changed, 275 insertions(+), 25 deletions(-)
diff --git a/.gitignore b/.gitignore
index 50e4fc7..994d131 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,7 @@ platform/core/common/styles/css/
index.html
target/
node_modules/
-.cache-loader/
+.cache-loader*/
coverage/
npm-debug.log*
fds-demo.bundle.min.js*
diff --git a/package-lock.json b/package-lock.json
index b323fd0..c26f454 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1865,6 +1865,95 @@
"babel-runtime": "6.26.0"
}
},
+ "babel-plugin-istanbul": {
+ "version": "5.1.4",
+ "resolved":
"https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz",
+ "integrity":
"sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "3.0.0",
+ "istanbul-lib-instrument": "3.3.0",
+ "test-exclude": "5.2.3"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity":
"sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "istanbul-lib-coverage": {
+ "version": "2.0.5",
+ "resolved":
"https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity":
"sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+ "dev": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "3.3.0",
+ "resolved":
"https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
+ "integrity":
"sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
+ "dev": true,
+ "requires": {
+ "@babel/generator": "7.4.0",
+ "@babel/parser": "7.4.3",
+ "@babel/template": "7.4.0",
+ "@babel/traverse": "7.4.3",
+ "@babel/types": "7.4.0",
+ "istanbul-lib-coverage": "2.0.5",
+ "semver": "6.1.3"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity":
"sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved":
"https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity":
"sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.2.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity":
"sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved":
"https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity":
"sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.1.3",
+ "resolved":
"https://registry.npmjs.org/semver/-/semver-6.1.3.tgz",
+ "integrity":
"sha512-aymF+56WJJMyXQHcd4hlK4N75rwj5RQpfW8ePlQnJsTYOBLlLbcIErR/G1s9SkIvKBqOudR3KAx4wEqP+F1hNQ==",
+ "dev": true
+ }
+ }
+ },
"babel-polyfill": {
"version": "6.26.0",
"resolved":
"https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
@@ -15152,6 +15241,153 @@
}
}
},
+ "test-exclude": {
+ "version": "5.2.3",
+ "resolved":
"https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
+ "integrity":
"sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.4",
+ "minimatch": "3.0.4",
+ "read-pkg-up": "4.0.0",
+ "require-main-filename": "2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity":
"sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.4",
+ "resolved":
"https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity":
"sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved":
"https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity":
"sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved":
"https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity":
"sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.2.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity":
"sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved":
"https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity":
"sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved":
"https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1",
+ "json-parse-better-errors": "1.0.2"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity":
"sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "4.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "resolved":
"https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity":
"sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "3.0.0",
+ "read-pkg": "3.0.0"
+ }
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved":
"https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity":
"sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
"text-table": {
"version": "0.2.0",
"resolved":
"https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -16086,7 +16322,7 @@
"express": "4.16.4",
"filesize": "3.6.1",
"gzip-size": "5.1.0",
- "lodash": "4.17.10",
+ "lodash": "4.17.11",
"mkdirp": "0.5.1",
"opener": "1.5.1",
"ws": "6.2.1"
diff --git a/package.json b/package.json
index f51f300..f305183 100644
--- a/package.json
+++ b/package.json
@@ -90,6 +90,7 @@
"@typescript-eslint/eslint-plugin": "1.6.0",
"babel-eslint": "10.0.1",
"babel-loader": "8.0.5",
+ "babel-plugin-istanbul": "5.1.4",
"babel-polyfill": "6.26.0",
"cache-loader": "2.0.1",
"compression-webpack-plugin": "2.0.0",
diff --git a/webpack.common.js b/webpack.common.js
index 728323f..3f6c70b 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -60,8 +60,6 @@ module.exports = {
module: {
rules: [
- loaders.ts,
- loaders.js,
loaders.html,
loaders.scss
]
diff --git a/webpack.dev.js b/webpack.dev.js
index f80fb80..be682f7 100644
--- a/webpack.dev.js
+++ b/webpack.dev.js
@@ -21,13 +21,14 @@ const merge = require('webpack-merge');
const LicenseWebpackPlugin =
require('license-webpack-plugin').LicenseWebpackPlugin;
const commonConfig = require('./webpack.common');
+const loaders = require('./webpack.loader');
module.exports = merge(commonConfig, {
// Tells webpack to use its built-in optimizations accordingly
mode: 'development',
// Source maps
- devtool: 'eval-source-map',
+ devtool: 'inline-source-map',
// "webpack-dev-server" configuration
devServer: {
@@ -55,15 +56,17 @@ module.exports = merge(commonConfig, {
port: 28080
},
+ module: {
+ rules: [
+ loaders.ts,
+ loaders.js,
+ ]
+ },
+
plugins: [
// Hot Module Replacement
new webpack.HotModuleReplacementPlugin(),
- // Source map generation
- new webpack.SourceMapDevToolPlugin({
- filename: '[file].map'
- }),
-
// generate a file with all bundled packages licenses' in it. This can
be used to add to the LICENSE file
new LicenseWebpackPlugin({
outputFilename: './target/thirdPartyLicenses.txt',
diff --git a/webpack.karma.js b/webpack.karma.js
index 599ae74..fac7d03 100644
--- a/webpack.karma.js
+++ b/webpack.karma.js
@@ -31,8 +31,8 @@ module.exports = merge(commonConfig, {
module: {
rules: [
- loaders.tsDev,
- loaders.jsDev,
+ loaders.tsCoverage,
+ loaders.jsCoverage,
loaders.html,
loaders.ignoreScss
]
diff --git a/webpack.loader.js b/webpack.loader.js
index e697972..236be40 100644
--- a/webpack.loader.js
+++ b/webpack.loader.js
@@ -17,6 +17,8 @@
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const cacheCoverageDir = '.cache-loader-coverage';
+
module.exports = {
ts: {
test: /\.tsx?$/,
@@ -37,7 +39,7 @@ module.exports = {
]
},
- tsDev: {
+ tsCoverage: {
test: /\.tsx?$/,
include: [
path.resolve(__dirname, 'webapp'),
@@ -52,14 +54,14 @@ module.exports = {
loader: 'cache-loader'
},
{
+ loader: path.resolve(__dirname, 'angular-url-loader')
+ },
+ {
// Instrument TS files with istanbul-lib-instrument for
subsequent code coverage reporting
loader: 'istanbul-instrumenter-loader',
options: { esModules: true }
},
{
- loader: path.resolve(__dirname, 'angular-url-loader')
- },
- {
loader: 'ts-loader'
}
]
@@ -73,7 +75,10 @@ module.exports = {
],
use: [
{
- loader: 'cache-loader'
+ loader: 'cache-loader',
+ options: {
+ cacheDirectory: cacheCoverageDir
+ }
},
{
loader: path.resolve(__dirname, 'angular-url-loader')
@@ -87,7 +92,7 @@ module.exports = {
]
},
- jsDev: {
+ jsCoverage: {
test: /\.js$/,
include: [
path.resolve(__dirname, 'webapp'),
@@ -101,12 +106,10 @@ module.exports = {
],
use: [
{
- loader: 'cache-loader'
- },
- {
- // Instrument JS files with istanbul-lib-instrument for
subsequent code coverage reporting
- loader: 'istanbul-instrumenter-loader',
- options: {esModules: true}
+ loader: 'cache-loader',
+ options: {
+ cacheDirectory: cacheCoverageDir
+ }
},
{
loader: path.resolve(__dirname, 'angular-url-loader')
@@ -114,7 +117,8 @@ module.exports = {
{
loader: 'babel-loader',
options: {
- presets: ['@babel/preset-env']
+ presets: ['@babel/preset-env'],
+ plugins: ['babel-plugin-istanbul']
}
}
]
diff --git a/webpack.prod.js b/webpack.prod.js
index 72a4aca..b13ac0d 100644
--- a/webpack.prod.js
+++ b/webpack.prod.js
@@ -21,6 +21,7 @@ const OptimizeCSSAssetsPlugin =
require('optimize-css-assets-webpack-plugin');
const cssnano = require('cssnano');
const commonConfig = require('./webpack.common');
+const loaders = require('./webpack.loader');
module.exports = merge(commonConfig, {
// Tells webpack to use its built-in optimizations accordingly
@@ -29,6 +30,13 @@ module.exports = merge(commonConfig, {
// Source maps
devtool: 'source-map',
+ module: {
+ rules: [
+ loaders.ts,
+ loaders.js,
+ ]
+ },
+
optimization: {
noEmitOnErrors: true,
minimizer: [