在honeypack中启用HMR

简介: ## honeypack honeypack是一个基于webpack,结合了不同项目开发习惯,编写而成的开源前端打包工具。 #### 功能 1. 支持独立启动一个dev server 2.

honeypack

honeypack是一个基于webpack,结合了不同项目开发习惯,编写而成的开源前端打包工具。

功能

  1. 支持独立启动一个dev server
  2. 支持作为express的中间件
  3. 支持纯打包模式

特性

  • 通过简单地问答就能生成一份完整实用的webpack配置文件,并且自动安装依赖,接着你可以根据自己项目的特点随意修改,想加loader随意加,想改plugin的参数随意改,不想要的配置随意删,没有做不到的定制内容。
  • [计划中]自动升级webpack配置文件,支持最新特性。比如自动把uglifyjs换成terser,让你把全部精力都放在app开发上。

了解更多

HMR

HMR-热更新指的是当前端任何被引用到的文件发生变化时,服务器能自动推送新的文件到浏览器,并且能把修改的地方立即体现出来,而不用刷新页面。

了解更多

如何在honeypack中支持HMR

这里只介绍在中间件形式下开启HMR的方法,如果是独立启动一个server,参考官方文档

  1. 设置参数hot为true

    // honeycomb
    
    webpack: {
      enable: true,
      module: 'honeypack',
      router: '/assets',
      config: {
        hot: true    // <------- 这个
      }
    }
    
    // express
    
    app.use(honeypack({
      config: 'webpack.config.js',
      root: './assets',
      hot: true    // <------- 这个
    }));
  2. 修改webpack.config.js文件

      entry: {
    -   app: './index.jsx'
    +   app: [
    +     `honeypack/client?path=${publicPath}/__webpack_hmr`,
    +     './index.jsx'
    +   ]
      }
    
      plugins: [
    +   new webpack.HotModuleReplacementPlugin(),
      ]
    
    * publicPath为output中的publicPath
    这个时候刷新一下页面,就会发现多了一个`http://${host}/${publicPath}/__webpack_hmr`的请求。
  1. 修改前端项目代码

    1. 集成更新

      1. react

        • 给顶层组件加上hot()方法

          import React from 'react';
          import ReactDOM from 'react-dom';
          import {hot} from 'react-hot-loader/root';
          
          const App = () => <div>Hello Word!</div>;
          const Wrap = hot(App);
          
          ReactDOM.render(<Wrap />, $DOM);
          刷新一下浏览器页面,看见`Hello Word!`后,在文件里把`Word`改成`World`,回到浏览器,就会看见已经是`Hello World!`了

        + [推荐的可选步骤] 在`webpack.config.js`中,给`babel-loader`增加一个plugin
// babel-loader
  plugins: [
+   'react-hot-loader/babel'
  ]
    2. [其他框架](https://webpack.js.org/guides/hot-module-replacement/#other-code-and-frameworks)

2. 手动更新

  手动更新的思路是服务器会主动推送被修改过的文件,然后前端根据不同的文件手动进行不同的操作。

  [了解更多](https://webpack.js.org/guides/hot-module-replacement/#enabling-hmr)
相关文章
|
6月前
|
JavaScript 前端开发 开发者
Spartacus 6.8 成功开启 SSR 的命令行
Spartacus 6.8 成功开启 SSR 的命令行
|
1天前
|
前端开发
配置 Webpack 实现热更新
【10月更文挑战第23天】还可以进一步深入探讨热更新的具体实现细节、不同场景下的应用案例,以及如何针对特定需求进行优化等方面的内容。通过全面、系统地了解 Webpack 热更新的配置方法,能够更好地利用这一功能,提升项目的开发效率和性能表现。同时,要不断关注 Webpack 及相关技术的发展动态,以便及时掌握最新的热更新技术和最佳实践。
|
1天前
|
监控 前端开发 JavaScript
Webpack 中 HMR 插件的工作原理
【10月更文挑战第23天】可以进一步深入探讨 HMR 工作原理的具体细节、不同场景下的应用案例,以及与其他相关技术的结合应用等方面的内容。通过全面、系统地了解 HMR 插件的工作原理,能够更好地利用这一功能,为项目的成功开发提供有力保障。同时,要不断关注技术的发展动态,以便及时掌握最新的 HMR 技术和最佳实践。
|
1天前
|
缓存 监控 算法
提高 Webpack 热更新的性能
【10月更文挑战第23天】还可以进一步深入探讨热更新性能优化的具体案例、不同场景下的优化策略,以及与其他相关技术的结合应用等方面的内容。通过全面、系统地了解热更新性能优化的方法和技巧,能够更好地利用这一功能,为项目的成功开发提供有力保障。同时,要不断关注技术的发展动态,以便及时掌握最新的热更新技术和最佳实践。
|
1天前
|
自然语言处理 前端开发 开发工具
webpack 热更新
【10月更文挑战第23天】Webpack 热更新是一项非常实用的技术,它为前端开发带来了极大的便利和效率提升。通过深入了解其原理和应用,开发者可以更好地利用热更新功能,提高开发质量和速度。
|
6月前
|
JavaScript 中间件 API
Spartacus 2211 启用 SSR
Spartacus 2211 启用 SSR
|
6月前
|
API 开发工具 开发者
webpack热更新原理
Webpack的Hot Module Replacement(HMR)提升开发效率,无需刷新页面即可更新模块。开启HMR需在配置中设`devServer.hot: true`。Webpack构建时插入HMR Runtime,通过WebSocket监听并处理文件变化。当模块改变,Webpack发送更新到浏览器,HMR Runtime找到对应模块进行热替换,保持应用状态。开发者可利用`module.hot` API处理热替换逻辑。
|
资源调度 前端开发 JavaScript
配置多入口 Webpack 热更新失效? #120
配置多入口 Webpack 热更新失效? #120
176 0
|
移动开发 前端开发 JavaScript
Webpack 如何配置热更新 #96
Webpack 如何配置热更新 #96
252 0
|
资源调度 JavaScript
vue-cli3+webpack热更新失效问题
A项目中遇到问题,热更新失效,百思不得其解,查询搜索vuecli3热更新失效、vue histroy 模式热更新失效,网上看到不少方法,npm重新安装,不要用淘宝镜像cnpm安装;npm安装yarn,再用yarn重新install,yarn serve启动,在npm run serve 启动等方法都不好用。github有类似问题3.0.0-beta.16 热更新失效 · Issue #1559 · vuejs/vue-cli · GitHub,有次得到启发可能版本不同导致。 对比热更新正常的项目B的几个配置文件,重点查看package.json文件,发现有webpack版本不同。
481 0
vue-cli3+webpack热更新失效问题