webpack.public.config.js 2.22 KB
import webpack,{DefinePlugin} from 'webpack';
import path from 'path';
import ExtractTextPlugin from "extract-text-webpack-plugin";
import CleanWebpackPlugin from 'clean-webpack-plugin';

let pathsToClean = [
    'build'
];
let cleanOptions = {
    root:     __dirname,
    verbose:  true,
    dry:      false
};

module.exports = {
    //项目入口js文件
    //项目输出目录
    output: {
        chunkFilename: 'routes/[name].[chunkhash:8].chunk.js',
        path: path.resolve(__dirname, 'build'),
        filename: '[name].[chunkhash:8].js',
    },
    //插件
    plugins: [
        new DefinePlugin({//全局变量
            PRODUCTION: false
        }),
        new ExtractTextPlugin('css/[name].[chunkhash:8].css'),//css分离
        new CleanWebpackPlugin(pathsToClean, cleanOptions),//清除历史版本
    ],
    //加载器
    module: {
        rules: [
            {
                test: /\.js/,
                exclude: /node_modules/,
                use: [
                    {
                        loader: 'babel-loader',
                    }
                ]
            },
            {
                test:/\.css$/,
                use: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: 'css-loader'
                }),
            },
            {
                test: /\.scss$/,
                use: ExtractTextPlugin.extract({
                    use: [{
                        loader: "css-loader"
                    }, {
                        loader: "sass-loader"
                    }, {
                        loader: "postcss-loader"
                    }],
                    // 在开发环境使用 style-loader
                    fallback: "style-loader"
                })
            },
            {
                test: /\.(png|jpg|gif)$/,
                use: "url-loader?limit=8192",
            },
            {test: /\.html$/, use: 'html-withimg-loader'},
            {test: /\.json$/, use: 'json-loader'}
        ]
    },
    devServer:  {
        port: 8080,
        disableHostCheck: true,
    },
    devtool: "cheap-eval-source-map",
    //模块路径
    resolve:{
        alias: {
            '@': path.resolve(__dirname, 'src')
        }
    }
};