3 const path = require('path');
4 const CleanWebpackPlugin = require('clean-webpack-plugin');
5 const { DefinePlugin, HotModuleReplacementPlugin } = require('webpack');
6 const HtmlWebpackPlugin = require('html-webpack-plugin');
7 const devConfig = require('./tools/getDevConfig');
8 const proxyServer = require('./proxy-server');
9 const fs = require('fs');
11 let devPort = process.env.PORT || devConfig.port;
12 let publicPath = 'http://localhost:' + devPort + '/onboarding/';
14 module.exports = (env, argv) => {
15 let DEV = argv.mode && argv.mode === 'development';
19 env.language === undefined ||
22 console.log('Setting language to default "en".');
25 language = env.language;
26 console.log('Setting language to "' + env.language + '".');
31 'punch-outs': ['sdc-app/punch-outs.js']
34 devtool: DEV ? 'eval-source-map' : undefined,
35 performance: { hints: false },
37 modules: [path.resolve('.'), path.join(__dirname, 'node_modules')],
39 i18nJson: 'nfvo-utils/i18n/' + language + '.json',
40 'nfvo-utils': 'src/nfvo-utils',
41 'nfvo-components': 'src/nfvo-components',
42 'sdc-app': 'src/sdc-app',
43 // TODO - this is needed for heatValidation standalone. Can be deprecated down the line
44 'react-select/dist/': 'node_modules' + '/react-select/dist/'
48 path: path.join(__dirname, 'dist'),
49 publicPath: DEV ? publicPath : './',
50 filename: DEV ? '[name].js' : '[name]_' + language + '.js'
57 include: path.resolve(__dirname, 'src'),
58 use: [{ loader: 'eslint-loader' }]
62 include: path.resolve(__dirname, 'src'),
63 use: [{ loader: 'babel-loader' }]
67 loader: 'source-map-loader',
68 include: path.resolve(__dirname, 'src'),
72 test: /\.(css|scss)$/,
75 loader: 'style-loader'
81 loader: 'sass-loader',
83 output: { path: path.join(__dirname, 'dist') }
89 path.join(__dirname, DEV ? '../dox-sequence-diagram-ui/' : 'node_modules/dox-sequence-diagram-ui/'),
90 path.join(__dirname, 'node_modules/react-datepicker/'),
91 path.join(__dirname, 'node_modules/react-select/'),
92 path.join(__dirname, 'node_modules/onap-ui-common/'),
93 path.join(__dirname, 'node_modules/react-checkbox-tree/')
97 test: /\.(svg)(\?.*)?$/,
101 mimetype: 'image/svg+xml'
106 'node_modules/dox-sequence-diagram-ui/'
108 path.join(__dirname, 'node_modules/onap-ui-common/')
112 test: /\.worker\.js$/,
113 use: { loader: 'worker-loader' }
119 new CleanWebpackPlugin(['dist'], { watch: false }),
124 new HotModuleReplacementPlugin()
131 new HtmlWebpackPlugin({
132 filename: 'index.html',
133 template: __dirname + '/src/index.html'
138 webpackConfig.output.globalObject = 'this';
139 webpackConfig.entry['punch-outs'].push('react-hot-loader/patch');
140 webpackConfig.entry['punch-outs'].push(
141 'webpack-dev-server/client?http://localhost:' + devPort
143 webpackConfig.entry['punch-outs'].push('webpack/hot/only-dev-server');
144 webpackConfig.devServer = {
146 historyApiFallback: true,
147 publicPath: publicPath,
148 contentBase: path.join(__dirname, 'dist'),
153 exclude: [path.join(__dirname, 'node_modules')]
158 console.log('Running build for : ' + argv.mode);
159 return webpackConfig;