webpack.develop.config.js 2.4 KB
import path from 'path';
import webpack from 'webpack';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import OpenBrowserPlugin from 'open-browser-webpack-plugin';

const rootPath = path.resolve(__dirname, '..');

module.exports = {
    mode: 'development',
    entry: {
        app: ['webpack-hot-middleware/client', path.resolve(rootPath, 'src', 'index.js')]
    },
    devtool: 'inline-source-map',
    devServer: {
        contentBase: 'build'
    },
    module: {
        rules: [{
            test: /\.(js|jsx?)$/,
            exclude: [
                path.resolve(rootPath, 'node_modules')
            ],
            use: {
                loader: "babel-loader",
                options: {
                    presets: ["@babel/env", "@babel/react"],
                    plugins: [
                        "@babel/plugin-proposal-class-properties",
                        "@babel/plugin-syntax-dynamic-import",
                        "@babel/plugin-proposal-export-default-from",
                        "@babel/plugin-proposal-export-namespace-from"
                    ]
                }
            }
        }, {
            test: /\.less$/,
            use: [{
                loader: "style-loader"
            }, {
                loader: "css-loader"
            }, {
                loader: "less-loader",
                options: {
                    paths: [
                        path.resolve(rootPath, "node_modules")
                    ]
                }
            }]
        }, {
            test: /\.css$/,
            use: [{
                loader: "style-loader"
            }, {
                loader: "css-loader"
            }]
        }]
    },
    plugins: [
        new webpack.DefinePlugin({
            "window.evn": JSON.stringify('development')
        }),
        new webpack.HotModuleReplacementPlugin(),
        new HtmlWebpackPlugin({
            title: 'Output Management',
            "filename": path.resolve(rootPath, 'build', 'index.html'),
            "inject": 'body',
            "template": path.resolve(rootPath, 'src', 'index-template.html')
        }),
        new OpenBrowserPlugin({ url: 'http://localhost:3000' })
    ],
    resolve: {
        alias: {
            src: path.resolve(rootPath, 'src'),
            antd: path.resolve(rootPath, 'node_modules', 'antd')
        }
    },
    output: {
        filename: '[name].bundle.js',
        path: path.resolve(rootPath, 'build'),
        publicPath: '/'
    }
};