webpack只有更改js文件才能自动刷新,更改css文件不能自动刷新?

const path = require('path');
var webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin'); //生成html
const ExtractTextPlugin = require("extract-text-webpack-plugin");  //css单独打包
const OpenBrowserPlugin = require('open-browser-webpack-plugin');
const PATHS = {
    app: path.join(__dirname, 'src/app'),
    build: path.join(__dirname, 'build'),
};

module.exports = {
    devtool: "cheap-eval-source-map",
    entry: {
        app: PATHS.app,
    },
    output: {
        path: PATHS.build,
        filename: '[name].[hash:8].js',
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    fallback: "style-loader",
                    use: ['css-loader', 'postcss-loader'] //使用postcss-loader 要在plugin中配置LoaderOptionsPlugin
                })
            }
        ]
    },

    devServer: {
        contentBase: './',  //本地服务器所加载的页面所在的目录
        host: 'localhost',
        port: 8080,
        historyApiFallback: true,  //不跳转
        hot: true,
        inline: true,//
        proxy: {
            '/api': {
                target: '',
                secure: false,
                changeOrigin: true,
                host: ''
            }
        }
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: '测试',//生成HTML文件的title,设置template没用
            filename: './index.html',//打包后html文件名
            template: './src/template/index.html',//
            inject: 'head',
            favicon: '',// html 文件生成一个 favicon
            hash: true,//给生成的js文件hash 值
            minify: {    //压缩HTML文件
                removeComments: true,    //移除HTML中的注释
                collapseWhitespace: true,    //删除空白符与换行符
                conservativeCollapse: true,
                minifyJS: true //js也在一行
            }
        }),
        new ExtractTextPlugin({filename: '[name].[hash:8].css'}),//样式压缩
        new OpenBrowserPlugin({    //自动打开浏览器
            url: 'http://localhost:8080'
        }),
        new webpack.LoaderOptionsPlugin({
            options: {
                postcss: function () {
                    return [
                        require('autoprefixer')
                    ];
                }
            }
        }),
    ],
};
阅读 5k
3 个回答

试一试

plugins.push(new webpack.HotModuleReplacementPlugin())

增加 webpack 热替换

你的入口文件,配置可以稍微更改以前,例如这样

entry: ['webpack/hot/dev-server', path.resolve(__dirname, 'src/app')],

楼主知道是什么问题了吗,我也遇到这个问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题