
const {resolve} = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
/**
 * HMR:一个模块发生变化，只打包一个
 * css文件支持热更新
 * js默认不支持 解决：修改js代码，单独处理非入口js文件
 * html默认不支持（由于只有一个html文件，不需要HMR功能），且默认不热更新  解决：entry加入index.html
 */
module.exports = {
    entry : ['./src/js/index.js','./src/index.html'],
    output:{
        filename: 'js/built.js',
        path: resolve(__dirname,'build')
    },
    module:{
        rules:[
            //less
            {
                test:/\.less$/,
                use:['style-loader','css-loader','less-loader']
            },
            //css
            {
                test:/\.css$/,
                use:['style-loader','css-loader']
            },
            //图片
            {
                test: /\.(jpg|jpeg|png|gif)$/,
                loader: 'url-loader',
                options:{
                    limit:8*1024,
                    name:'[hash:10].[ext]',
                    esModule:false,
                    outputPath: 'imgs'
                },
                type:'javascript/auto'
            },
            //html
            {
                test:/\.html$/,
                loader: 'html-loader'
            },
            //其他
            {
                exclude:/\.(html|js|css|less|jpg|jpeg|png|gif)$/,
                loader:'file-loader',
                options:{
                    name:'[hash:10].[ext]',
                    esModule:false,
                    outputPath: 'media'
                },
                type:'javascript/auto'
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./src/index.html'
        })
    ],
    mode: 'development',
    devServer:{
        contentBase:resolve(__dirname,'build'),
        compress:true,
        port:3000,
        open:true,
        hot:true
    },
    target: "web"     //可以解决browserslist 导致 webpack-dev-server 的自动刷新失效
}