返回介绍

六、更好使用 webpack-dev-server

发布于 2024-09-07 12:24:19 字数 2505 浏览 0 评论 0 收藏 0

webpack-dev-serverwebpack 官方提供的一个工具,可以基于当前的 webpack 构建配置快速启动一个静态服务。当 modedevelopment 时,会具备 hot reload 的功能,即当源码文件变化时,会即时更新当前页面,以便你看到最新的效果…

6.1 基础使用

webpack-dev-server 是一个 npm package ,安装后在已经有 webpack 配置文件的项目目录下直接启动就可以

  • webpack-dev-server 默认使用 8080 端口
npm install webpack-dev-server -g
webpack-dev-server --mode development

package 中的 scripts 配置:

{
  // ...
  "scripts": {
    "start": "webpack-dev-server --mode development"
  }
}

6.2 配置

在 webpack 的配置中,可以通过 devServer 字段来配置 webpack-dev-server ,如端口设置、启动 gzip 压缩等,这里简单讲解几个常用的配置

  • public 字段用于指定静态服务的域名,默认是 http://localhost:8080/ ,当你使用 Nginx 来做反向代理时,应该就需要使用该配置来指定 Nginx 配置使用的服务域名
  • port 字段用于指定静态服务的端口,如上,默认是 8080 ,通常情况下都不需要改动
  • publicPath 字段用于指定构建好的静态文件在浏览器中用什么路径去访问,默认是 / ,例如,对于一个构建好的文件 bundle.js ,完整的访问路径是 http://localhost:8080/bundle.js ,如果你配置了 publicPath: 'assets/' ,那么上述 bundle.js 的完整访问路径就是 http://localhost:8080/assets/bundle.js 。可以使用整个 URL 来作为 publicPath 的值,如 publicPath: 'http://localhost:8080/assets/' 。如果你使用了 HMR ,那么要设置 publicPath 就必须使用完整的 URL

建议将 devServer.publicPathoutput.publicPath 的值保持一致

  • proxy 用于配置 webpack-dev-server 将特定 URL 的请求代理到另外一台服务器上。当你有单独的后端开发服务器用于请求 API 时,这个配置相当有用。例如
proxy: {
  '/api': {
    target: "http://localhost:3000", // 将 URL 中带有 /api 的请求代理到本地的 3000 端口的服务上
    pathRewrite: { '^/api': '' }, // 把 URL 中 path 部分的 `api` 移除掉
  },
}...
  • beforeafter 配置用于在 webpack-dev-server 定义额外的中间件,如
before(app){
  app.get('/some/path', function(req, res) { // 当访问 /some/path 路径时,返回自定义的 json 数据
    res.json({ custom: 'response' })
  })
}...
  • beforewebpack-dev-server 静态资源中间件处理之前,可以用于拦截部分请求返回特定内容,或者实现简单的数据 mock
  • afterwebpack-dev-server 静态资源中间件处理之后,比较少用到,可以用于打印日志或者做一些额外处理…

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文