Update ODLUX
[ccsdk/features.git] / sdnr / wt / odlux / framework / webpack.config.js
index 95b5f5e..b7bbacb 100644 (file)
-/**\r
- * ============LICENSE_START========================================================================\r
- * ONAP : ccsdk feature sdnr wt odlux\r
- * =================================================================================================\r
- * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.\r
- * =================================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except\r
- * in compliance with the License. You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software distributed under the License\r
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r
- * or implied. See the License for the specific language governing permissions and limitations under\r
- * the License.\r
- * ============LICENSE_END==========================================================================\r
- */\r
-/**\r
- * Webpack 4 configuration file\r
- * see https://webpack.js.org/configuration/\r
- * see https://webpack.js.org/configuration/dev-server/\r
- */\r
-\r
-"use strict";\r
-\r
-const path = require("path");\r
-const webpack = require("webpack");\r
-const CopyWebpackPlugin = require("copy-webpack-plugin");\r
-const requirejsPlugin = require('requirejs-webpack-plugin');\r
-const TerserPlugin = require('terser-webpack-plugin');\r
-\r
-// const __dirname = (path => path.replace(/^([a-z]\:)/, c => c.toUpperCase()))(process.__dirname());\r
-\r
-module.exports = (env) => {\r
-  const distPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");\r
-  const frameworkPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");\r
-  return [{\r
-    name: "Client",\r
-    mode: "none", //disable default behavior\r
-    target: "web",\r
-\r
-    context: path.resolve(__dirname, "src"),\r
-\r
-    entry: {\r
-      app: [\r
-        "./run.ts",\r
-        "./app.tsx",\r
-        "./services",\r
-        "./components/objectDump",\r
-        "./components/material-table",\r
-        "./components/material-ui",\r
-        "./utilities/elasticSearch",\r
-        "./models"],\r
-    },\r
-\r
-    devtool: env === "release" ? false : "source-map",\r
-\r
-    resolve: {\r
-      extensions: [".ts", ".tsx", ".js", ".jsx"]\r
-    },\r
-\r
-    output: {\r
-      path: distPath,\r
-      library: "[name]", // related to webpack.DllPlugin::name\r
-      libraryTarget: "umd2",\r
-      filename: "[name].js",\r
-      chunkFilename: "[name].js"\r
-    },\r
-\r
-    module: {\r
-      rules: [{\r
-        test: /\.tsx?$/,\r
-        exclude: /node_modules/,\r
-        use: [{\r
-          loader: "babel-loader"\r
-        }, {\r
-          loader: "ts-loader"\r
-        }]\r
-      }, {\r
-        test: /\.jsx?$/,\r
-        exclude: /node_modules/,\r
-        use: [{\r
-          loader: "babel-loader"\r
-        }]\r
-      }, \r
-      {\r
-        //don't minify images\r
-        test: /\.(png|gif|jpg|svg)$/,\r
-        use: [{\r
-          loader: 'url-loader',\r
-          options: {\r
-            limit: 10,\r
-            name: './images/[name].[ext]'\r
-          }\r
-        }]\r
-      }\r
-      ]\r
-    },\r
-\r
-    optimization: {\r
-      noEmitOnErrors: true,\r
-      namedModules: env !== "release",\r
-      minimize: env === "release",\r
-      minimizer: env !== "release" ? [] : [new TerserPlugin({\r
-        terserOptions: {\r
-          mangle: {\r
-            reserved: ["./app.tsx"]\r
-          },\r
-          warnings: false, // false, true, "verbose"\r
-          compress: {\r
-            drop_console: true,\r
-            drop_debugger: true,\r
-          }\r
-        }\r
-      })],\r
-    },\r
-\r
-    plugins: [\r
-      new CopyWebpackPlugin([{\r
-        from: '../../node_modules/requirejs/require.js',\r
-        to: '.'\r
-      }, {\r
-        from: './favicon.ico',\r
-        to: '.'\r
-      }, {\r
-        from: env === "release" ? './index.html' : 'index.dev.html',\r
-        to: './index.html'\r
-      }]),\r
-      new requirejsPlugin({\r
-        path: distPath,\r
-        filename: 'config.js',\r
-        baseUrl: '',\r
-        pathUrl: '',\r
-        processOutput: function (assets) {\r
-          let mainConfig =  JSON.stringify(assets, null, 2);\r
-          mainConfig = mainConfig.slice(0,-1); // remove closing bracket from string\r
-          const entireConfig = mainConfig.concat(", waitSeconds: 30}"); // add waitSeconds to config\r
-          return 'require.config(' + entireConfig + ')';\r
-        }\r
-      }),\r
-      // new HtmlWebpackPlugin({\r
-      //   filename: "index.html",\r
-      //   template: "./index.html",\r
-      //   inject: "head"\r
-      // }),\r
-      // new HtmlWebpackIncludeAssetsPlugin({\r
-      //    assets: ['vendor.js'],\r
-      //    append: false\r
-      // }),\r
-      new webpack.DllReferencePlugin({\r
-        context: path.resolve(__dirname, "src"),\r
-        manifest: require(path.resolve(frameworkPath, "vendor-manifest.json")),\r
-        sourceType: "umd2"\r
-      }),\r
-      new webpack.DllPlugin({\r
-        context: path.resolve(__dirname, "src"),\r
-        name: "[name]",\r
-        path: path.resolve(distPath, "[name]-manifest.json")\r
-      }),\r
-      ...(env === "release") ? [\r
-        new webpack.DefinePlugin({\r
-          "process.env": {\r
-            NODE_ENV: "'production'",\r
-            VERSION: JSON.stringify(require("./package.json").version)\r
-          }\r
-        }),\r
-      ] : [\r
-          new webpack.HotModuleReplacementPlugin(),\r
-          new webpack.DefinePlugin({\r
-            "process.env": {\r
-              NODE_ENV: "'development'",\r
-              VERSION: JSON.stringify(require("./package.json").version)\r
-            }\r
-          }),\r
-          new webpack.WatchIgnorePlugin([\r
-            /css\.d\.ts$/,\r
-            /less\.d\.ts$/\r
-          ]),\r
-          new CopyWebpackPlugin([{\r
-            from: './assets/version.json',\r
-            to: './version.json'\r
-          }])\r
-        ]\r
-    ],\r
-\r
-    devServer: {\r
-      public: "http://localhost:3100",\r
-      contentBase: distPath,\r
-\r
-      compress: true,\r
-      headers: {\r
-        "Access-Control-Allow-Origin": "*"\r
-      },\r
-      host: "0.0.0.0",\r
-      port: 3100,\r
-      disableHostCheck: true,\r
-      historyApiFallback: true,\r
-      inline: true,\r
-      hot: false,\r
-      quiet: false,\r
-      stats: {\r
-        colors: true\r
-      },\r
-      proxy: {\r
-        "/about": {\r
-          // target: "http://10.20.6.29:48181",\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        }, \r
-        "/yang-schema/": {\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },   \r
-        "/oauth/": {\r
-          // target: "https://10.20.35.188:30205",\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-        "/oauth2/": {\r
-          // target: "https://10.20.35.188:30205",\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-        "/database/": {\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-        "/restconf/": {\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-        "/rests/": {\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-        "/help/": {\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-         "/about/": {\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-        "/tree/": {\r
-          target: "http://sdnr:8181",\r
-          secure: false\r
-        },\r
-        "/websocket": {\r
-          target: "http://sdnr:8181",\r
-          ws: true,\r
-          changeOrigin: true,\r
-          secure: false\r
-        },\r
-        "/apidoc": {\r
-          target: "http://sdnr:8181",\r
-          ws: true,\r
-          changeOrigin: true,\r
-          secure: false\r
-        }\r
-      }\r
-    }\r
-  }];\r
-}\r
-\r
-\r
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed 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.
+ * ============LICENSE_END==========================================================================
+ */
+/**
+ * Webpack 4 configuration file
+ * see https://webpack.js.org/configuration/
+ * see https://webpack.js.org/configuration/dev-server/
+ */
+
+"use strict";
+
+const path = require("path");
+const webpack = require("webpack");
+const CopyWebpackPlugin = require("copy-webpack-plugin");
+const requirejsPlugin = require('requirejs-webpack-plugin');
+const TerserPlugin = require('terser-webpack-plugin');
+
+// const __dirname = (path => path.replace(/^([a-z]\:)/, c => c.toUpperCase()))(process.__dirname());
+
+module.exports = (env) => {
+  const distPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");
+  const frameworkPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");
+  return [{
+    name: "Client",
+    mode: "none", //disable default behavior
+    target: "web",
+
+    context: path.resolve(__dirname, "src"),
+
+    entry: {
+      app: [
+        "./run.ts",
+        "./app.tsx",
+        "./services",
+        "./components/objectDump",
+        "./components/material-table",
+        "./components/material-ui",
+        "./utilities/elasticSearch",
+        "./models"],
+    },
+
+    devtool: env === "release" ? false : "source-map",
+
+    resolve: {
+      extensions: [".ts", ".tsx", ".js", ".jsx"]
+    },
+
+    output: {
+      path: distPath,
+      library: "[name]", // related to webpack.DllPlugin::name
+      libraryTarget: "umd2",
+      filename: "[name].js",
+      chunkFilename: "[name].js"
+    },
+
+    module: {
+      rules: [{
+        test: /\.tsx?$/,
+        exclude: /node_modules/,
+        use: [{
+          loader: "babel-loader"
+        }, {
+          loader: "ts-loader"
+        }]
+      }, {
+        test: /\.jsx?$/,
+        exclude: /node_modules/,
+        use: [{
+          loader: "babel-loader"
+        }]
+      }, 
+      {
+        //don't minify images
+        test: /\.(png|gif|jpg|svg)$/,
+        use: [{
+          loader: 'url-loader',
+          options: {
+            limit: 10,
+            name: './images/[name].[ext]'
+          }
+        }]
+      }
+      ]
+    },
+
+    optimization: {
+      noEmitOnErrors: true,
+      namedModules: env !== "release",
+      minimize: env === "release",
+      minimizer: env !== "release" ? [] : [new TerserPlugin({
+        terserOptions: {
+          mangle: {
+            reserved: ["./app.tsx"]
+          },
+          warnings: false, // false, true, "verbose"
+          compress: {
+            drop_console: true,
+            drop_debugger: true,
+          }
+        }
+      })],
+    },
+
+    plugins: [
+      new CopyWebpackPlugin([{
+        from: '../../node_modules/requirejs/require.js',
+        to: '.'
+      }, {
+        from: './favicon.ico',
+        to: '.'
+      }, {
+        from: env === "release" ? './index.html' : 'index.dev.html',
+        to: './index.html'
+      }]),
+      new requirejsPlugin({
+        path: distPath,
+        filename: 'config.js',
+        baseUrl: '',
+        pathUrl: '',
+        processOutput: function (assets) {
+          let mainConfig =  JSON.stringify(assets, null, 2);
+          mainConfig = mainConfig.slice(0,-1); // remove closing bracket from string
+          const entireConfig = mainConfig.concat(", waitSeconds: 30}"); // add waitSeconds to config
+          return 'require.config(' + entireConfig + ')';
+        }
+      }),
+      // new HtmlWebpackPlugin({
+      //   filename: "index.html",
+      //   template: "./index.html",
+      //   inject: "head"
+      // }),
+      // new HtmlWebpackIncludeAssetsPlugin({
+      //    assets: ['vendor.js'],
+      //    append: false
+      // }),
+      new webpack.DllReferencePlugin({
+        context: path.resolve(__dirname, "src"),
+        manifest: require(path.resolve(frameworkPath, "vendor-manifest.json")),
+        sourceType: "umd2"
+      }),
+      new webpack.DllPlugin({
+        context: path.resolve(__dirname, "src"),
+        name: "[name]",
+        path: path.resolve(distPath, "[name]-manifest.json")
+      }),
+      ...(env === "release" ? [
+        new webpack.DefinePlugin({
+          "process.env": {
+            NODE_ENV: "'production'",
+            VERSION: JSON.stringify(require("./package.json").version)
+          }
+        }),
+      ] : [
+          new webpack.HotModuleReplacementPlugin(),
+          new webpack.DefinePlugin({
+            "process.env": {
+              NODE_ENV: "'development'",
+              VERSION: JSON.stringify(require("./package.json").version)
+            }
+          }),
+          new webpack.WatchIgnorePlugin([
+            /css\.d\.ts$/,
+            /less\.d\.ts$/
+          ]),
+          new CopyWebpackPlugin([{
+            from: './assets/version.json',
+            to: './version.json'
+          }])
+        ])
+    ],
+
+    devServer: {
+      public: "http://localhost:3100",
+      contentBase: distPath,
+
+      compress: true,
+      headers: {
+        "Access-Control-Allow-Origin": "*"
+      },
+      host: "0.0.0.0",
+      port: 3100,
+      disableHostCheck: true,
+      historyApiFallback: true,
+      inline: true,
+      hot: false,
+      quiet: false,
+      stats: {
+        colors: true
+      },
+      proxy: {
+        "/about": {
+          // target: "http://10.20.6.29:48181",
+          target: "http://sdnr:8181",
+          secure: false
+        }, 
+        "/yang-schema/": {
+          target: "http://sdnr:8181",
+          secure: false
+        },   
+        "/oauth/": {
+          // target: "https://10.20.35.188:30205",
+          target: "http://sdnr:8181",
+          secure: false
+        },
+        "/oauth2/": {
+          // target: "https://10.20.35.188:30205",
+          target: "http://sdnr:8181",
+          secure: false
+        },
+        "/database/": {
+          target: "http://sdnr:8181",
+          secure: false
+        },
+        "/restconf/": {
+          target: "http://sdnr:8181",
+          secure: false
+        },
+        "/rests/": {
+          target: "http://sdnr:8181",
+          secure: false
+        },
+        "/help/": {
+          target: "http://sdnr:8181",
+          secure: false
+        },
+         "/about/": {
+          target: "http://sdnr:8181",
+          secure: false
+        },
+        "/tree/": {
+          target: "http://sdnr:8181",
+          secure: false
+        },
+        "/websocket": {
+          target: "http://sdnr:8181",
+          ws: true,
+          changeOrigin: true,
+          secure: false
+        },
+        "/apidoc": {
+          target: "http://sdnr:8181",
+          ws: true,
+          changeOrigin: true,
+          secure: false
+        }
+      }
+    }
+  }];
+}
+
+