【前端工程化】五:webpack5快速入门(二)

本文详细介绍了如何使用webpack5的webpack-dev-server实现开发环境的自动编译和热更新,包括webpack-dev-middleware的使用、HMR功能配置、React和Vue组件的热更新支持。同时讲解了output的path、devServer的path和公共路径配置、resolve模块解析规则以及source-map的作用。还探讨了ts-loader和babel-loader在处理TS文件时的区别,并提供了加载vue文件的配置方法。
摘要由CSDN通过智能技术生成

webpack-dev-server

要实现在开发时修改了文件可以自动编译展示,可以使用webpack的watch属性为true和vscode的live server插件,即观察模式

// webpack.config.js
module.exports = {
   
    watch: true,
    ...
}

但是这样做有几个缺点:

  • 所有源代码都会重新编译
  • 因为我们使用了clean-webpack-plugin插件,所以每次编译成功以后都需要进行文件读写操作
  • live server是vscode插件,我们理所应当使用Webpack的插件
  • live server不能实现局部刷新

基于以上原因,所以我们使用webpack-dev-server, devServer将数据都写在内存中

npm install webpack-dev-server -D

注意,这里配置的命令与webpack4的yarn webpack-dev-server有所不同

// package.json
"scripts": {
   
	"serve": "webpack serve --config lg.webpack.js"
}

webpack-dev-middleware

webpack-dev-middleware 是一个封装器(wrapper),它可以把 webpack 处理过的文件发送到一个 server。webpack-dev-server 在内部使用了它,然而它也可以作为一个单独的 package 来使用,以便根据需求进行更多自定义设置。下面是一个 webpack-dev-middleware 配合 express server 的示例。

const express = require('express')
const webpackDevMiddleware = require('webpack-dev-middleware')
const webpack = require('webpack')

const app = express()

// 获取配置文件
const config = require('./webpack.config.js')
const compiler = webpack(config)

app.use(webpackDevMiddleware(compiler))

// 开启端口上的服务
app.listen(3000, () => {
   
  console.log('服务运行在 3000端口上')
})

HMR功能使用

模块热替换(hot module replacement 或 HMR)是 webpack 提供的最有用的功能之一。它允许在运行时更新所有类型的模块,而无需完全刷新。

注意:因为我们在开发阶段配置Mode为development,与我们配置的.browserslistrc文件的兼容性有冲突,官方建议我们使用taget: 'web’的方式来解决;

配置hotOnly属性无论是否更新都不会刷新浏览器。

// webpack.config.js
module.exports = {
   
  target: 'web'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whoopsina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值