-/**\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
+ }
+ }
+ }
+ }];
+}
+
+