[关闭]
@Dale-Lin 2022-03-24T20:45:28.000000Z 字数 1286 阅读 289

开发模式

webpack5


每次编译代码时手动运行 webpack 命令很麻烦,使用以下某种方式来在代码更新后自构建。

多数浏览器场景下使用 webpack-dev-server;watch mode 在调试 npm 包之类只需要关心构建结果的场景更好用。

watch mode

webpack --watch 命令在构建完成后不退出,而是继续 watch 文件。
缺点是浏览器不会自动刷新;可以使用 webpack-dev-server 来实现浏览器自动刷新。

webpack-dev-server

webpack-dev-server 提供了一个初级的(rudimentary)web 服务器和实时重载能力(默认配置并没有 HMR)。设置方式:

  1. yarn add webpack-dev-server -D
  1. // webpack.config.js
  2. module.exports = {
  3. devServer: {
  4. static: './dist' // 把 dist 目录的资源作为服务器的可访问文件
  5. }
  6. }

webpack-dev-server 的默认端口是 8080,并根据 webpack.config.jsoutput 配置为服务提供 bundle 文件,即可以通过 http://[devServer.host]:[devServer.port]
/[output.publicPath]/[output.filename] 访问。

webpack-dev-server 不在编译后做任何写入,而是把 bundle 文件保留在内存中,然后为对应的服务地址提供响应。可以通过 dev server 配置项的 devMiddleware.publicPath 修改本地的服务路径。

webpack-dev-middleware

webpack-dev-middleware 是一个将 webpack 处理后的文件发送到服务的中间件,webpack-dev-server 内部使用了它。

在需要自定义服务器(例如使用 express、koa 起本地 node 服务)提供 web 服务时可以使用。

用例:

  1. yarn add express webpack-dev-middleware -D
  1. // server.js
  2. const express = require('express')
  3. const webpack = require('webpack')
  4. const webpackDevMiddleware = require('webpack-dev-middleware')
  5. const config = require('./webpack.config.js')
  6. const app = express()
  7. const compiler = webpack(config)
  8. app.use(
  9. webpackDevMiddleware(compiler, {
  10. publicPath: config.output.publicPath
  11. })
  12. )
  13. app.listen(17777, () => {
  14. console.log('Serving on port 17777!\n')
  15. })
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注