Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt-odlux / odlux / framework / webpack.runner.js
1 /**
2  * Webpack 4 configuration file
3  * see https://webpack.js.org/configuration/
4  * see https://webpack.js.org/configuration/dev-server/
5  */
6
7 "use strict";
8
9 const path = require("path");
10 const webpack = require("webpack");
11 const TerserPlugin = require('terser-webpack-plugin');
12
13 // const __dirname = (path => path.replace(/^([a-z]\:)/, c => c.toUpperCase()))(process.__dirname());
14
15 module.exports = (env) => {
16   const distPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");
17   const frameworkPath = path.resolve(__dirname, env === "release" ? "." : "..", "dist");
18   return [{
19     name: "App",
20
21     mode: "none", //disable default behavior
22
23     target: "web",
24
25     context: path.resolve(__dirname, "src"),
26
27     entry: {
28       run: ["./run.ts"]
29     },
30
31     devtool: env === "release" ? false : "source-map",
32
33     resolve: {
34       extensions: [".ts", ".tsx", ".js", ".jsx"]
35     },
36
37     output: {
38       path: distPath,
39       filename: "[name].js",
40       library: "[name]",
41       libraryTarget: "umd2",
42       chunkFilename: "[name].js"
43     },
44     module: {
45       rules: [{
46         test: /\.tsx?$/,
47         exclude: /node_modules/,
48         use: [{
49           loader: "babel-loader"
50         }, {
51           loader: "ts-loader"
52         }]
53       }, {
54         test: /\.jsx?$/,
55         exclude: /node_modules/,
56         use: [{
57           loader: "babel-loader"
58         }]
59       }]
60     },
61     optimization: {
62       noEmitOnErrors: true,
63       namedModules: env !== "release",
64       minimize: env === "release",
65       minimizer: env !== "release" ? [] : [new TerserPlugin({
66         terserOptions: {
67           warnings: false, // false, true, "verbose"
68           compress: {
69             drop_console: true,
70             drop_debugger: true,
71           }
72         }
73       })],
74     },
75     plugins: [
76       new webpack.DllReferencePlugin({
77         context: path.resolve(__dirname, "./src"),
78         manifest: require(path.resolve(frameworkPath, "app-manifest.json")),
79         sourceType: "umd2"
80       }),
81
82     ]
83   }
84   ];
85 };