const path = require('path'); const process = require('process'); const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; module.exports = (env, argv) => { const port = process.env.SERVER_PORT; return { optimization: { minimize: false, removeAvailableModules: true, removeEmptyChunks: true, splitChunks: false, }, entry: './src/ts/entry.tsx', resolve: { extensions: [ '.ts', '.tsx', '.js', '.jsx' ], alias: { Lib: path.resolve(__dirname, 'src/ts/lib'), Store: path.resolve(__dirname, 'src/ts/store'), Component: path.resolve(__dirname, 'src/ts/component'), Interface: path.resolve(__dirname, 'src/ts/interface'), Model: path.resolve(__dirname, 'src/ts/model'), Docs: path.resolve(__dirname, 'src/ts/docs'), }, modules: [ path.resolve('./src/'), path.resolve('./electron/'), path.resolve('./dist/'), path.resolve('./node_modules') ] }, devServer: { hot: true, static: path.join(__dirname, 'dist'), static: { directory: path.join(__dirname, 'dist'), watch: { ignored: [ path.resolve(__dirname, 'dist'), path.resolve(__dirname, 'node_modules') ], usePolling: false, }, }, historyApiFallback: true, host: 'localhost', port: port, }, module: { rules: [ { test: /\.ts(x?)$/, exclude: /node_modules/, loader: 'ts-loader' }, { enforce: 'pre', test: /\.js$/, loader: 'source-map-loader' }, { test: /\.(eot|ttf|otf|woff|woff2)$/, loader: 'url-loader' }, { test: /\.(jpe?g|png|gif|svg)$/, loader: 'url-loader' }, { test: /\.s?css/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' } ] } ] }, plugins: [ //new BundleAnalyzerPlugin(), ], externals: { bindings: 'require("bindings")' }, }; };