const webpack = require('webpack'); const writeFilePlugin = require('write-file-webpack-plugin'); const webpackMerge = require('webpack-merge'); const BrowserSyncPlugin = require('browser-sync-webpack-plugin'); const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin'); const SimpleProgressWebpackPlugin = require('simple-progress-webpack-plugin'); const WebpackNotifierPlugin = require('webpack-notifier'); const path = require('path'); const utils = require('./utils.js'); const commonConfig = require('./webpack.common.js'); const ENV = 'development'; module.exports = (options) => webpackMerge(commonConfig({ env: ENV }), { devtool: 'cheap-module-source-map', // https://reactjs.org/docs/cross-origin-errors.html mode: ENV, entry: [ 'react-hot-loader/patch', './src/main/webapp/app/index' ], output: { path: utils.root('build/www'), filename: 'app/[name].bundle.js', chunkFilename: 'app/[id].chunk.js' }, module: { rules: [ { test: /\.(sa|sc|c)ss$/, loaders: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'] }, ] }, devServer: { stats: options.stats, hot: true, contentBase: './build/www', proxy: [{ context: [ /* jhipster-needle-add-entity-to-webpack - JHipster will add entity api paths here */ '/api', '/management', '/swagger-resources', '/v2/api-docs', '/h2-console', '/auth' ], target: 'http://127.0.0.1:8080', secure: false, headers: { host: 'localhost:9000' } }], watchOptions: { ignored: /node_modules/ } }, plugins: [ new SimpleProgressWebpackPlugin({ format: options.stats === 'minimal' ? 'compact' : 'expanded' }), new FriendlyErrorsWebpackPlugin(), new BrowserSyncPlugin({ host: 'localhost', port: 9000, proxy: { target: 'http://localhost:9060' } }, { reload: false }), new webpack.HotModuleReplacementPlugin(), new writeFilePlugin(), new webpack.WatchIgnorePlugin([ utils.root('src/test'), ]), new WebpackNotifierPlugin({ title: 'JHipster', contentImage: path.join(__dirname, 'logo-jhipster.png') }) ] });