| /** |
| * 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 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" ? "../../framework" : "../..", "dist"); |
| return [{ |
| name: "App", |
| |
| mode: "none", //disable default behavior |
| |
| target: "web", |
| |
| context: path.resolve(__dirname, "src"), |
| |
| entry: { |
| linkCalculationApp: ["./pluginLinkCalculation.tsx"] |
| }, |
| |
| devtool: env === "release" ? false : "source-map", |
| |
| resolve: { |
| extensions: [".ts", ".tsx", ".js", ".jsx"] |
| }, |
| |
| output: { |
| path: distPath, |
| filename: "[name].js", |
| library: "[name]", |
| libraryTarget: "umd2", |
| 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: /\.scss$/, |
| include: /node_modules/, |
| use: ['style-loader', 'css-loader', 'sass-loader'], |
| },{ |
| test: /\.s[ac]ss$/i, |
| use: [ |
| // Creates `style` nodes from JS strings |
| 'style-loader', |
| // Translates CSS into CommonJS |
| 'css-loader', |
| // Compiles Sass to CSS |
| 'sass-loader', |
| ], |
| }] |
| }, |
| |
| optimization: { |
| noEmitOnErrors: true, |
| namedModules: env !== "release", |
| minimize: env === "release", |
| minimizer: env !== "release" ? [] : [new TerserPlugin({ |
| terserOptions: { |
| warnings: false, // false, true, "verbose" |
| compress: { |
| drop_console: true, |
| drop_debugger: true, |
| } |
| } |
| })], |
| }, |
| |
| plugins: [ |
| new webpack.DllReferencePlugin({ |
| context: path.resolve(__dirname, "../../framework/src"), |
| manifest: require(path.resolve(frameworkPath, "vendor-manifest.json")), |
| sourceType: "umd2" |
| }), |
| new webpack.DllReferencePlugin({ |
| context: path.resolve(__dirname, "../../framework/src"), |
| manifest: require(path.resolve(frameworkPath, "app-manifest.json")), |
| sourceType: "umd2" |
| }), |
| ...(env === "release") ? [ |
| new webpack.DefinePlugin({ |
| "process.env": { |
| NODE_ENV: "'production'", |
| VERSION: JSON.stringify(require("./package.json").version) |
| } |
| }), |
| ] : [ |
| new webpack.DefinePlugin({ |
| "process.env": { |
| NODE_ENV: "'development'", |
| VERSION: JSON.stringify(require("./package.json").version) |
| } |
| }), |
| new CopyWebpackPlugin([{ |
| from: 'index.html', |
| to: distPath |
| }]), |
| ] |
| ], |
| |
| devServer: { |
| public: "http://localhost:3100", |
| contentBase: frameworkPath, |
| |
| 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://sdnr:8181", |
| secure: false |
| }, |
| "/database/": { |
| target: "http://sdnr:8181", |
| secure: false |
| }, |
| "/rests/": { |
| target: "http://sdnr:8181", |
| secure: false |
| }, |
| "/topology/": { |
| target: "http://localhost:3002", |
| secure: false |
| }, |
| "/help/": { |
| target: "http://sdnr:8181", |
| secure: false |
| }, |
| "/websocket/": { |
| target: "http://sdnr:8181", |
| ws: true, |
| changeOrigin: true, |
| secure: false |
| } |
| } |
| |
| } |
| }]; |
| } |