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