webpack HMR热更新 不使用webpack-dev-server

不想用webpack-dev-server(想自己学着配置一下),就这么简单

【涉及版本】:

  • webpack4 (4.44.1)

【问题】:

  • 编译更新了,但页面不会自动刷新,查了下解决办法,附上

【包解释】
【chokidar】:监听文件变化并刷新页面

// 用于执行webpack的app.js
// 引入chokidar
const chokidar = require('chokidar');
// webpack()
  var webpack = require('webpack'),
      webpackDevMiddleware = require('webpack-dev-middleware'),
      webpackHotMiddleware = require('webpack-hot-middleware'),
      webpackDevConfig = require('./build/webpack.config');
      
  var compiler = webpack(webpackDevConfig);
  
  const devMiddleWare = webpackDevMiddleware(compiler, {
    publicPath: webpackDevConfig.output.publicPath,
    noInfo: true,
    hot: true,
    // 这里强制将html文件写入(需要为编译后的html文件设置模板引擎)
    writeToDisk: (filename) => {
      return /\.html$/.test(filename)
    },
    stats: {
      colors: true
    }
  })
  const hotMiddleware = webpackHotMiddleware(compiler)
  app.use(devMiddleWare)
  app.use(hotMiddleware);
  // 以下开始监听目标文件/dist/index.html的变动,watcher.on('change',...)时候触发更新
  app.active = ()=>{
    const watcher = chokidar.watch([
        path.resolve(__dirname, '/dist/index.html'),
    ]);
    watcher.on('ready', function() {
        console.log('Initial scan complete. Ready for changes');
    });
    watcher.on('change', function(path) {
        console.log('File [' + path + '] changed !');
        // 重点!!  reload the client on file changes
        hotMiddleware.publish({action: 'reload'});
    });
  }

  app.active()
  
  // ------------------------- webpack.config.js文件 -----------------------------

const HotMiddleWareConfig = 'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000';
// 入口文件处增加
  entry:{
    main: [HotMiddleWareConfig, resolve('src/main.js')],
  },
// plugins中增加一项
  plugins:[
    new webpack.HotModuleReplacementPlugin(),
  ]
  

结束,希望帮助到大家
我女神

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值