| /** |
| * ============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: [
|
| "./app.tsx",
|
| "./services",
|
| "./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"
|
| }]
|
| }, {
|
| test: /\.(png|gif|jpg|svg)$/,
|
| use: [{
|
| loader: 'url-loader',
|
| options: {
|
| limit: 10000,
|
| name: './images/[hash].[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) {
|
| return 'require.config(' + JSON.stringify(assets, null, 2) + ')';
|
| }
|
| }),
|
| // 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$/
|
| ])
|
| ]
|
| ],
|
|
|
| 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: {
|
| "/oauth2/**/*": {
|
| target: "http://localhost:3000",
|
| secure: false
|
| }
|
| }
|
| }
|
|
|
| }];
|
| }
|
|
|
|
|