[转] webpack热更新配置小结
webpack热更新配置
热更新,可以使开发的人在修改代码后,不用刷新浏览器即可以看到修改后的效果。而它的另一个好处则是可以只替换修改部分相关的代码,大大的缩短了构建的时间。
热更新一般会涉及到两种场景下面的使用,一个是项目属于纯前端资源的,另一种是node工程项目。
纯前端资源配置
配置过程内容比较多,这里大致描述下实现热更新能力需要做些什么。
首先安装相关的包,会发现热更新的能力主要是webpack-dev-server
实现,它提供一个本地服务器,并且在内容发生变化时更新浏览器内容。而react-hot-loader
主要作用是重刷react组件,非react项目中不要,这样配置又简化了。
然后在构建的配置文件中需要做一些配置,该配置作用是将热更新所需要的代码注入到入口js文件中
配置完成后,你只需要修改代码,静静的看着浏览器更新就好了。
react-hot-loader这个组件比较强大,可以在redux或者react native项目中使用。
node工程资源配置
这里配置方法与上面类似,在此基础之上多了一些配置
demo在github上可下载运行
首先, 我们需要一个中间件,嵌入到server中(server以koa2为例)
npm i —save koa-webpack
koa-webpack其中主要依赖两个包webpack-dev-middleware和webpack-hot-middleware, 拆开来使用也可以,配置也都类似
第二步,修改构建配置文件
之前这里是使用server来刷新内容的,这种场景下是去掉了webpack-dev-server
插件而使用webpack-hot-middleware
实现
entry: {
index: ['react-hot-loader/patch',
'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000',
'./src/index.js'
]
}
第三步,在server中require这个中间件
const webpackMiddleware = require('koa-webpack');
const config = require('./webpack.config.babel');
第四步, 配置server所需要的参数
这里主要是config
参数和dev.publicPath
,其他参数可选而已,这里列出来看看
app.use(webpackMiddleware({
config: config,
dev: {
publicPath: config.output.publicPath,
// public path to bind the middleware to
// use the same as in webpack
// publicPath is required, whereas all other options are optional
noInfo: false
}
}));
第五步,修改启动server
const http = require('http');
const server = http.createServer(app.callback());
server.listen(8080, () => {
console.log('server running at http://127.0.0.1:8080');
});
启动程序后查看效果,修改代码后直接看浏览器内容是否更新
上面过程中可能遇到的问题
- 无法热更新,可能是服务器配置端口和构建中热更新插件的端口或路径不一致
- 入口js文件编译后,生成的资源的路径由参数
dev.publicPath
决定(因为文件是生成在内存中,由外部文件服务器来管理。这里不同于之前纯前端场景下路径由output.path
和output.publicPath
来控制) - 生成环境和测试环境区分构建配置文件(好像是废话)
[转] webpack热更新配置小结的更多相关文章
- webpack热更新和常见错误处理
时间:2016-11-03 10:50:54 地址:https://github.com/zhongxia245/blog/issues/45 webpack热更新 一.要求 局部刷新修改的地方 二. ...
- webpack热更新实现
原文地址:webpack热更新实现 webpack,一代版本一代神,代代版本出大神.如果你的webpack和webpack-dev-server版本大于2小于等于3.6,请继续看下去.其它版本就必浪费 ...
- 轻松理解webpack热更新原理
一.前言 - webpack热更新 Hot Module Replacement,简称HMR,无需完全刷新整个页面的同时,更新模块.HMR的好处,在日常开发工作中体会颇深:节省宝贵的开发时间.提升开发 ...
- koa和egg项目webpack热更新实现
背景 在用Node.js+Webpack构建的方式进行开发时, 我们希望能实现修改代码能实时刷新页面UI的效果. 这个特性webpack本身是支持的, 而且基于koa也有现成的koa-webpack- ...
- Webpack 多html入口、devServer、热更新配置
一.clean-webpack-plugin: 在每次生成dist目录前,先删除本地的dist文件(每次自动删除太麻烦) 1.安装clean-webpack-plugin npm/cnpm i c ...
- webpack热更新问题和antd design字体图标库扩展
标题也不知道怎么写好,真是尴尬.不过话说回来,距离上一次写文快两个月了,最近有点忙,一直在开发新项目, 今天刚刚闲下来,项目准备提测.借这个功夫写点东西,把新项目上学到的一些好的干活分享一下,以便之后 ...
- koa2 + webpack 热更新
网上有很多express+webpack的热更新,但是koa2的很少,这两天研究了一下子,写一个简单的教程. 1.需要的包 webpack:用于构建项目 webpack-dev-middleware: ...
- webpack 热更新
1.安装webpack npm install webpack -g //全局安装 npm install webpack --save-dev //开发环境 2.使用webpack 创建一个we ...
- webpack热更新 同时导出文件到本地
webpack 配置热更新后,文件配置导出到本地 安装 npm i webpack-dev-server-output --save-dev 引入 const WebpackDevServerOutp ...
随机推荐
- Java中的回车换行符/n /r /t
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格.通常用的Enter是两个加起来.下面转一篇文章. 回车和换行 今天,我总算搞清楚“回车”(carriage return)和“换行 ...
- <algorithm>里的sort函数对结构体排序
题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...
- webkitAnimationEnd事件与webkitTransitionEnd事件
写一个焦点图demo,css3动画完成以后要把它隐藏掉,这里会用到css3的事件,以前没有接触过,结果查了一下发现这是一片新天地啊,而且里面还有好多坑,比如重复动画多次触发什么的.anyway,我还是 ...
- pandas 读csv文件 TypeError: Empty 'DataFrame': no numeric data to plot
简单的代码,利用pandas模块读csv数据文件,这里有两种方式,一种是被新版本pandas遗弃的Series.from_csv:另一种就是pandas.read_csv 先说一下问题这个问题就是在读 ...
- Hive配置永久显示表字段名并且不显示表名
1 配置文件 hive/conf下hive-site.xml /mnt/software/hive-1.1.0-cdh5.7.0/conf 2 添加配置项 <!--不显示表名--> < ...
- groovy与java中的多方法
最近在学习groovy的时候从书里看到这么一个有趣的例子,刚开始我也猜错了: 最后测试答案是: son ----show 刚开始没理解,以为是num---show,但是后来看书上说是: test01接 ...
- CSS如何进行图文并茂布局怎么破
上下结构 左右结构 右边左边的结构
- 【windows核心编程】远程线程DLL注入
15.1 DLL注入 目前公开的DLL注入技巧共有以下几种: 1.注入表注入 2.ComRes注入 3.APC注入 4.消息钩子注入 5.远线程注入 6.依赖可信进程注入 7.劫持进程创建注入 8.输 ...
- Windows域帐户
域的直观优点: 1.域帐户可以在任意一台已经加入域的电脑上登录. 2.将域用户组加入到SQL Server登录里,域用户组内所有人员便都可以使用域用户登录数据库,继承相关权限. 3.域用户登录Team ...
- H3C SNMP OID
有两种mib-style [1]老些的设备 cpu 使用率OID: .1.3.6.1.4.1.25506.2.6.1.1.1.1.6.slot 内存使用率OID: .1.3.6.1.4.1.2550 ...