const Path = require('path'); const Webpack = require('webpack'); const WebpackMerge = require('webpack-merge'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const WebpackDashboardPlugin = require('webpack-dashboard/plugin'); const configBase = require('./webpack.config.base.js'); module.exports = WebpackMerge(configBase, { entry: { webapp: [ 'react-hot-loader/patch' ] }, devtool: 'inline-source-map', devServer: { hot: true, inline: true, historyApiFallback: true, publicPath: '/', // match the output `publicPath` contentBase: [__dirname + '/public', __dirname + '/dist', __dirname + '/node_modules'], // match the output path host: '127.0.0.1', port: 9091, stats: { colors: true }, watchOptions: { ignored: /node_modules/, }, }, module: { rules: [ { enforce: 'pre', test: /\.js$/, loader: 'source-map-loader', exclude: [ Path.resolve(__dirname, '../../node_modules/') ] }, { enforce: 'pre', test: /\.tsx?$/, use: "source-map-loader", exclude: [ Path.resolve(__dirname, '../../node_modules/') ] }, // { // test: /\.tsx?$/, // loaders: [ // 'awesome-typescript-loader' // ], // exclude: [ // Path.resolve(__dirname, '../../node_modules/') // ], // include: [ // Path.resolve(__dirname, '../../src/') // ] // }, { test: /\.tsx?$/, exclude: [ Path.resolve(__dirname, '../../node_modules/') ], include: [ Path.resolve(__dirname, '../../src/') ], use: [ { loader: 'react-hot-loader/webpack' }, { loader: 'awesome-typescript-loader', options: { transpileOnly: true, useTranspileModule: false, sourceMap: true, }, }, ], }, ] }, plugins: [ new WebpackDashboardPlugin(), new Webpack.HotModuleReplacementPlugin(), new Webpack.NamedModulesPlugin(), new Webpack.NoEmitOnErrorsPlugin(), new HtmlWebpackPlugin({ template: Path.resolve(__dirname, '../../public/index.html') }), new Webpack.optimize.CommonsChunkPlugin({ name: 'vendor', minChunks: Infinity, filename: 'vendor.js' }), ] });