You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by lp...@apache.org on 2017/09/14 14:38:52 UTC

[16/38] ambari git commit: AMBARI-21946 Log Search UI: reorganize generated files structure. (ababiichuk)

AMBARI-21946 Log Search UI: reorganize generated files structure. (ababiichuk)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2a6dd58f
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2a6dd58f
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2a6dd58f

Branch: refs/heads/feature-branch-AMBARI-21307
Commit: 2a6dd58f506b5e9fcaf7b435e645c2397fe35855
Parents: 18ae06d
Author: ababiichuk <ab...@hortonworks.com>
Authored: Wed Sep 13 16:19:25 2017 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Wed Sep 13 16:56:56 2017 +0300

----------------------------------------------------------------------
 .../ambari-logsearch-web/.angular-cli.json      |  34 +-
 ambari-logsearch/ambari-logsearch-web/README.md |  10 +-
 .../ambari-logsearch-web/package.json           |  34 +-
 ambari-logsearch/ambari-logsearch-web/pom.xml   |   1 +
 .../ambari-logsearch-web/src/app/app.module.ts  |   2 +-
 .../ambari-logsearch-web/webpack.config.js      | 530 +++++++++++++++++++
 6 files changed, 571 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2a6dd58f/ambari-logsearch/ambari-logsearch-web/.angular-cli.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/.angular-cli.json b/ambari-logsearch/ambari-logsearch-web/.angular-cli.json
index 70fd7b6..267f5e0 100644
--- a/ambari-logsearch/ambari-logsearch-web/.angular-cli.json
+++ b/ambari-logsearch/ambari-logsearch-web/.angular-cli.json
@@ -1,12 +1,12 @@
 {
   "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
   "project": {
-    "name": "ambari-logsearch-web"
+    "name": "ambari-logsearch-web",
+    "ejected": true
   },
   "apps": [
     {
       "root": "src",
-      "outDir": "dist",
       "assets": [
         "assets",
         "favicon.ico"
@@ -15,20 +15,8 @@
       "main": "main.ts",
       "polyfills": "polyfills.ts",
       "test": "test.ts",
-      "tsconfig": "tsconfig.app.json",
       "testTsconfig": "tsconfig.spec.json",
-      "prefix": "app",
-      "styles": [
-        "styles.less",
-        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
-        "../node_modules/font-awesome/css/font-awesome.min.css",
-        "../src/vendor/css/bootstrap-logsearch.min.css"
-      ],
-      "scripts": [
-        "../node_modules/jquery/dist/jquery.min.js",
-        "../node_modules/bootstrap/dist/js/bootstrap.min.js",
-        "../src/vendor/js/bootstrap-logsearch.min.js"
-      ],
+      "prefix": "",
       "environmentSource": "environments/environment.ts",
       "environments": {
         "dev": "environments/environment.ts",
@@ -36,11 +24,6 @@
       }
     }
   ],
-  "e2e": {
-    "protractor": {
-      "config": "./protractor.conf.js"
-    }
-  },
   "lint": [
     {
       "project": "src/tsconfig.app.json"
@@ -52,13 +35,8 @@
       "project": "e2e/tsconfig.e2e.json"
     }
   ],
-  "test": {
-    "karma": {
-      "config": "./karma.conf.js"
-    }
-  },
   "defaults": {
-    "styleExt": "less",
-    "component": {}
-  }
+    "styleExt": "less"
+  },
+  "packageManager": "yarn"
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2a6dd58f/ambari-logsearch/ambari-logsearch-web/README.md
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/README.md b/ambari-logsearch/ambari-logsearch-web/README.md
index ff1456e..081d22a 100644
--- a/ambari-logsearch/ambari-logsearch-web/README.md
+++ b/ambari-logsearch/ambari-logsearch-web/README.md
@@ -4,7 +4,7 @@ This project was generated with [Angular CLI](https://github.com/angular/angular
 
 ## Development server
 
-Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
+Run `npm start` or `yarn start` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
 
 ## Code scaffolding
 
@@ -12,16 +12,16 @@ Run `ng generate component component-name` to generate a new component. You can
 
 ## Build
 
-Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
+Run `npm run build` or `yarn build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `npm run build-prod` or `yarn build-prod` command for a production build.
 
 ## Running unit tests
 
-Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
+Run `npm test` or `yarn test` to execute the unit tests via [Karma](https://karma-runner.github.io).
 
 ## Running end-to-end tests
 
-Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
-Before running the tests make sure you are serving the app via `ng serve`.
+Run `npm run e2e` or `yarn e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
+Before running the tests make sure you are serving the app via `npm start` or `yarn start`.
 
 ## Further help
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/2a6dd58f/ambari-logsearch/ambari-logsearch-web/package.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/package.json b/ambari-logsearch/ambari-logsearch-web/package.json
index 0892d85..7e8a0ba 100644
--- a/ambari-logsearch/ambari-logsearch-web/package.json
+++ b/ambari-logsearch/ambari-logsearch-web/package.json
@@ -4,12 +4,13 @@
   "license": "Apache 2.0",
   "scripts": {
     "ng": "ng",
-    "start": "ng serve",
-    "build": "ng build",
-    "build-prod": "ng build -prod",
-    "test": "ng test",
+    "start": "webpack-dev-server --port=4200",
+    "build": "webpack",
+    "build-prod": "NODE_ENV='production' webpack -p",
+    "test": "karma start ./karma.conf.js",
     "lint": "ng lint",
-    "e2e": "ng e2e"
+    "e2e": "protractor ./protractor.conf.js",
+    "pree2e": "webdriver-manager update --standalone false --gecko false --quiet"
   },
   "dependencies": {
     "@angular/common": "^4.0.0",
@@ -60,6 +61,27 @@
     "protractor": "~5.1.0",
     "ts-node": "~2.0.0",
     "tslint": "~4.5.0",
-    "typescript": "~2.2.0"
+    "typescript": "~2.2.0",
+    "webpack-dev-server": "~2.7.1",
+    "webpack": "~3.5.5",
+    "autoprefixer": "^6.5.3",
+    "css-loader": "^0.28.1",
+    "cssnano": "^3.10.0",
+    "exports-loader": "^0.6.3",
+    "file-loader": "^0.10.0",
+    "html-webpack-plugin": "^2.29.0",
+    "less-loader": "^4.0.5",
+    "postcss-loader": "^1.3.3",
+    "postcss-url": "^5.1.2",
+    "raw-loader": "^0.5.1",
+    "sass-loader": "^6.0.3",
+    "source-map-loader": "^0.2.0",
+    "istanbul-instrumenter-loader": "^2.0.0",
+    "style-loader": "^0.13.1",
+    "stylus-loader": "^3.0.1",
+    "url-loader": "^0.5.7",
+    "circular-dependency-plugin": "^3.0.0",
+    "webpack-concat-plugin": "1.4.0",
+    "copy-webpack-plugin": "^4.0.1"
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2a6dd58f/ambari-logsearch/ambari-logsearch-web/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/pom.xml b/ambari-logsearch/ambari-logsearch-web/pom.xml
index 075527b..7a6b02e 100644
--- a/ambari-logsearch/ambari-logsearch-web/pom.xml
+++ b/ambari-logsearch/ambari-logsearch-web/pom.xml
@@ -117,6 +117,7 @@
                     <include>karma.conf.js</include>
                     <include>tsconfig.json</include>
                     <include>tslint.json</include>
+                    <include>webpack.config.js</include>
                   </includes>
                 </resource>
               </resources>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2a6dd58f/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
index c15ecbc..8ea933c 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
@@ -79,7 +79,7 @@ import {TimeZoneAbbrPipe} from '@app/pipes/timezone-abbr.pipe';
 
 export function HttpLoaderFactory(http: Http) {
   // adding 'static' parameter to step over mock data request
-  return new TranslateHttpLoader(http, 'assets/i18n/', '.json?static=true');
+  return new TranslateHttpLoader(http, 'resources/assets/i18n/', '.json?static=true');
 }
 
 export function getXHRBackend(injector: Injector, browser: BrowserXhr, xsrf: XSRFStrategy, options: ResponseOptions): any {

http://git-wip-us.apache.org/repos/asf/ambari/blob/2a6dd58f/ambari-logsearch/ambari-logsearch-web/webpack.config.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/webpack.config.js b/ambari-logsearch/ambari-logsearch-web/webpack.config.js
new file mode 100644
index 0000000..72eaa7f
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-web/webpack.config.js
@@ -0,0 +1,530 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const fs = require('fs');
+const path = require('path');
+const ConcatPlugin = require('webpack-concat-plugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const ProgressPlugin = require('webpack/lib/ProgressPlugin');
+const CircularDependencyPlugin = require('circular-dependency-plugin');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const autoprefixer = require('autoprefixer');
+const postcssUrl = require('postcss-url');
+const cssnano = require('cssnano');
+
+const {NoEmitOnErrorsPlugin, SourceMapDevToolPlugin, NamedModulesPlugin} = require('webpack');
+const {InsertConcatAssetsWebpackPlugin, NamedLazyChunksWebpackPlugin, BaseHrefWebpackPlugin} = require('@angular/cli/plugins/webpack');
+const {CommonsChunkPlugin} = require('webpack').optimize;
+const {AotPlugin} = require('@ngtools/webpack');
+
+const nodeModules = path.join(process.cwd(), 'node_modules');
+const realNodeModules = fs.realpathSync(nodeModules);
+const genDirNodeModules = path.join(process.cwd(), 'src', '$$_gendir', 'node_modules');
+const entryPoints = ["inline","polyfills","sw-register","styles","vendor","main"];
+const minimizeCss = false;
+const baseHref = "";
+const deployUrl = "";
+const postcssPlugins = function () {
+        // safe settings based on: https://github.com/ben-eb/cssnano/issues/358#issuecomment-283696193
+        const importantCommentRe = /@preserve|@license|[@#]\s*source(?:Mapping)?URL|^!/i;
+        const minimizeOptions = {
+            autoprefixer: false,
+            safe: true,
+            mergeLonghand: false,
+            discardComments: { remove: (comment) => !importantCommentRe.test(comment) }
+        };
+        return [
+            postcssUrl({
+                url: (URL) => {
+                    // Only convert root relative URLs, which CSS-Loader won't process into require().
+                    if (!URL.startsWith('/') || URL.startsWith('//')) {
+                        return URL;
+                    }
+                    if (deployUrl.match(/:\/\//)) {
+                        // If deployUrl contains a scheme, ignore baseHref use deployUrl as is.
+                        return `${deployUrl.replace(/\/$/, '')}${URL}`;
+                    }
+                    else if (baseHref.match(/:\/\//)) {
+                        // If baseHref contains a scheme, include it as is.
+                        return baseHref.replace(/\/$/, '') +
+                            `/${deployUrl}/${URL}`.replace(/\/\/+/g, '/');
+                    }
+                    else {
+                        // Join together base-href, deploy-url and the original URL.
+                        // Also dedupe multiple slashes into single ones.
+                        return `/${baseHref}/${deployUrl}/${URL}`.replace(/\/\/+/g, '/');
+                    }
+                }
+            }),
+            autoprefixer(),
+        ].concat(minimizeCss ? [cssnano(minimizeOptions)] : []);
+    };
+
+module.exports = {
+  "resolve": {
+    "extensions": [
+      ".ts",
+      ".js"
+    ],
+    "modules": [
+      "./node_modules",
+      "./node_modules"
+    ],
+    "symlinks": true
+  },
+  "resolveLoader": {
+    "modules": [
+      "./node_modules",
+      "./node_modules"
+    ]
+  },
+  "entry": {
+    "main": [
+      "./src/main.ts"
+    ],
+    "polyfills": [
+      "./src/polyfills.ts"
+    ],
+    "styles": [
+      "./src/styles.less",
+      "./node_modules/bootstrap/dist/css/bootstrap.min.css",
+      "./node_modules/font-awesome/css/font-awesome.min.css",
+      "./src/vendor/css/bootstrap-logsearch.min.css"
+    ]
+  },
+  "output": {
+    "path": path.join(process.cwd(), "dist/resources"),
+    "publicPath": "resources/",
+    "filename": "[name].bundle.js",
+    "chunkFilename": "[id].chunk.js"
+  },
+  "module": {
+    "rules": [
+      {
+        "enforce": "pre",
+        "test": /\.js$/,
+        "loader": "source-map-loader",
+        "exclude": [
+          /(\\|\/)node_modules(\\|\/)/
+        ]
+      },
+      {
+        "test": /\.html$/,
+        "loader": "raw-loader"
+      },
+      {
+        "test": /\.(eot|svg|cur)$/,
+        "loader": "file-loader?name=[name].[ext]"
+      },
+      {
+        "test": /\.(jpg|png|webp|gif|otf|ttf|woff|woff2|ani)$/,
+        "loader": "url-loader?name=[name].[ext]&limit=10000"
+      },
+      {
+        "exclude": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.css$/,
+        "use": [
+          "exports-loader?module.exports.toString()",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          }
+        ]
+      },
+      {
+        "exclude": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.scss$|\.sass$/,
+        "use": [
+          "exports-loader?module.exports.toString()",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          },
+          {
+            "loader": "sass-loader",
+            "options": {
+              "sourceMap": false,
+              "precision": 8,
+              "includePaths": []
+            }
+          }
+        ]
+      },
+      {
+        "exclude": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.less$/,
+        "use": [
+          "exports-loader?module.exports.toString()",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          },
+          {
+            "loader": "less-loader",
+            "options": {
+              "sourceMap": false,
+              "paths": []
+            }
+          }
+        ]
+      },
+      {
+        "exclude": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.styl$/,
+        "use": [
+          "exports-loader?module.exports.toString()",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          },
+          {
+            "loader": "stylus-loader",
+            "options": {
+              "sourceMap": false,
+              "paths": []
+            }
+          }
+        ]
+      },
+      {
+        "include": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.css$/,
+        "use": [
+          "style-loader",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          }
+        ]
+      },
+      {
+        "include": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.scss$|\.sass$/,
+        "use": [
+          "style-loader",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          },
+          {
+            "loader": "sass-loader",
+            "options": {
+              "sourceMap": false,
+              "precision": 8,
+              "includePaths": []
+            }
+          }
+        ]
+      },
+      {
+        "include": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.less$/,
+        "use": [
+          "style-loader",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          },
+          {
+            "loader": "less-loader",
+            "options": {
+              "sourceMap": false,
+              "paths": []
+            }
+          }
+        ]
+      },
+      {
+        "include": [
+          path.join(process.cwd(), "src/styles.less"),
+          path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
+          path.join(process.cwd(), "node_modules/font-awesome/css/font-awesome.min.css"),
+          path.join(process.cwd(), "src/vendor/css/bootstrap-logsearch.min.css")
+        ],
+        "test": /\.styl$/,
+        "use": [
+          "style-loader",
+          {
+            "loader": "css-loader",
+            "options": {
+              "sourceMap": false,
+              "importLoaders": 1
+            }
+          },
+          {
+            "loader": "postcss-loader",
+            "options": {
+              "ident": "postcss",
+              "plugins": postcssPlugins
+            }
+          },
+          {
+            "loader": "stylus-loader",
+            "options": {
+              "sourceMap": false,
+              "paths": []
+            }
+          }
+        ]
+      },
+      {
+        "test": /\.ts$/,
+        "loader": "@ngtools/webpack"
+      }
+    ]
+  },
+  "plugins": [
+    new NoEmitOnErrorsPlugin(),
+    new ConcatPlugin({
+      "uglify": false,
+      "sourceMap": true,
+      "name": "scripts",
+      "fileName": "../resources/[name].bundle.js",
+      "filesToConcat": [
+        "node_modules/jquery/dist/jquery.min.js",
+        "node_modules/bootstrap/dist/js/bootstrap.min.js",
+        "src/vendor/js/bootstrap-logsearch.min.js"
+      ]
+    }),
+    new InsertConcatAssetsWebpackPlugin([
+      "scripts"
+    ]),
+    new CopyWebpackPlugin([
+      {
+        "context": "src/",
+        "to": "",
+        "from": {
+          "glob": "assets/**/*",
+          "dot": true
+        }
+      },
+      {
+        "context": "src/",
+        "to": "../favicon.ico",
+        "from": {
+          "glob": "favicon.ico",
+          "dot": true
+        }
+      }
+    ], {
+      "ignore": [
+        ".gitkeep"
+      ],
+      "debug": "warning"
+    }),
+    new ProgressPlugin(),
+    new CircularDependencyPlugin({
+      "exclude": /(\\|\/)node_modules(\\|\/)/,
+      "failOnError": false
+    }),
+    new NamedLazyChunksWebpackPlugin(),
+    new HtmlWebpackPlugin({
+      "template": "./src/index.html",
+      "filename": "../index.html",
+      "hash": false,
+      "inject": true,
+      "compile": true,
+      "favicon": false,
+      "minify": false,
+      "cache": true,
+      "showErrors": true,
+      "chunks": "all",
+      "excludeChunks": [],
+      "title": "Webpack App",
+      "xhtml": true,
+      "chunksSortMode": function sort(left, right) {
+        let leftIndex = entryPoints.indexOf(left.names[0]);
+        let rightindex = entryPoints.indexOf(right.names[0]);
+        if (leftIndex > rightindex) {
+            return 1;
+        }
+        else if (leftIndex < rightindex) {
+            return -1;
+        }
+        else {
+            return 0;
+        }
+    }
+    }),
+    new BaseHrefWebpackPlugin({}),
+    new CommonsChunkPlugin({
+      "name": [
+        "inline"
+      ],
+      "minChunks": null
+    }),
+    new CommonsChunkPlugin({
+      "name": [
+        "vendor"
+      ],
+      "minChunks": (module) => {
+                return module.resource
+                    && (module.resource.startsWith(nodeModules)
+                        || module.resource.startsWith(genDirNodeModules)
+                        || module.resource.startsWith(realNodeModules));
+            },
+      "chunks": [
+        "main"
+      ]
+    }),
+    new SourceMapDevToolPlugin({
+      "filename": "[file].map[query]",
+      "moduleFilenameTemplate": "[resource-path]",
+      "fallbackModuleFilenameTemplate": "[resource-path]?[hash]",
+      "sourceRoot": "webpack:///"
+    }),
+    new CommonsChunkPlugin({
+      "name": [
+        "main"
+      ],
+      "minChunks": 2,
+      "async": "common"
+    }),
+    new NamedModulesPlugin({}),
+    new AotPlugin({
+      "mainPath": "main.ts",
+      "replaceExport": false,
+      "hostReplacementPaths": {
+        "environments/environment.ts": `environments/environment${process.env.NODE_ENV === "production" ? ".prod" : ""}.ts`
+      },
+      "exclude": [],
+      "tsConfigPath": "src/tsconfig.app.json",
+      "skipCodeGeneration": true
+    })
+  ],
+  "node": {
+    "fs": "empty",
+    "global": true,
+    "crypto": "empty",
+    "tls": "empty",
+    "net": "empty",
+    "process": true,
+    "module": false,
+    "clearImmediate": false,
+    "setImmediate": false
+  },
+  "devServer": {
+    "contentBase": path.join(process.cwd(), "dist"),
+    "historyApiFallback": true
+  }
+};