webpack dev server -- 以及修改html页面不更新问题

Webpack Dev Server 是一个开发服务器,它使得开发者可以快速开发和调试应用程序。它提供了实时重载(Live Reloading)、热模块替换(Hot Module Replacement, HMR)等功能。

主要功能

  1. 实时重载(Live Reloading): 当源代码发生变化时,Webpack Dev Server 会自动重新构建,并刷新浏览器页面以展示最新的代码变动。

  2. 热模块替换(Hot Module Replacement, HMR): 这个功能允许在应用程序运行时替换、添加或删除模块,而无需刷新整个页面。HMR 可以显著提升开发效率,特别是在样式和布局调整时。

  3. 中间件(Middleware): Webpack Dev Server 可以作为中间件与其他服务器(如 Express)集成,以便在复杂的项目中使用。

  4. 代理(Proxy): 开发过程中,可能需要将 API 请求代理到其他服务器。Webpack Dev Server 提供了代理功能,方便开发者处理跨域问题。

  5. 静态文件服务(Static File Serving): 可以指定一个目录,用于提供静态文件服务。

基本配置

javascript 复制代码
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/index.js', // 入口文件
  output: {
    filename: 'bundle.js', // 输出文件
    path: path.resolve(__dirname, 'dist') // 输出目录
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html' // HTML 模板文件
    })
  ],
  devServer: {
    contentBase: path.join(__dirname, 'dist'), // 静态文件目录
    compress: true, // 启用 gzip 压缩
    port: 9000, // 服务器端口
    open: true, // 自动打开浏览器
    hot: true, // 启用 HMR
    watchContentBase: true, // 监视静态文件变化
    proxy: {
      '/api': 'http://localhost:3000' // 代理 API 请求
    }
  },
  mode: 'development' // 开发模式
};

主要选项解释

  1. contentBase: 指定静态文件的根目录。Webpack Dev Server 将提供此目录中的所有文件。

  2. compress: 启用 gzip 压缩以加速文件传输。

  3. port: 指定服务器运行的端口,默认是 8080。

  4. open: 自动打开浏览器并访问服务器地址。

  5. hot: 启用热模块替换(HMR)。

  6. watchContentBase: 监视 contentBase 目录下的文件变化,当文件变化时触发重载。

  7. proxy : 配置代理,用于将特定 URL 的请求转发到其他服务器。例如,上面的配置会将所有 /api 开头的请求代理到 http://localhost:3000

首先安装webpack dev server

javascript 复制代码
pnpm i -D webpack-dev-server

配置webpack.config.js

javascript 复制代码
  devServer: {
    // 开发服务器
    static: {
      directory: path.join(__dirname, "dist"), // 静态文件目录
    },
    compress: true,
    port: 9000,
    open: true,
    hot: true,
    // 监听html
    watchFiles: ["./src/**/*.html"],
  },

注意:静态文件目录如果存在二级目录,如:dist/html 这样就会不能正常浏览。还会出现 Cannot GET /

这样就可以不打包的情况下实现浏览

相关推荐
码上成长5 分钟前
GraphQL:让前端自己决定要什么数据
前端·后端·graphql
冴羽14 分钟前
为什么在 JavaScript 中 NaN !== NaN?背后藏着 40 年的技术故事
前端·javascript·node.js
久爱@勿忘25 分钟前
vue下载项目内静态文件
前端·javascript·vue.js
前端炒粉25 分钟前
21.搜索二维矩阵 II
前端·javascript·算法·矩阵
合作小小程序员小小店1 小时前
web网页开发,在线%台球俱乐部管理%系统,基于Idea,html,css,jQuery,jsp,java,ssm,mysql。
java·前端·jdk·intellij-idea·jquery·web
不爱吃糖的程序媛1 小时前
Electron 应用中的系统检测方案对比
前端·javascript·electron
泷羽Sec-静安1 小时前
Less-9 GET-Blind-Time based-Single Quotes
服务器·前端·数据库·sql·web安全·less
pe7er1 小时前
用高阶函数实现递归:从匿名函数到通用递归生成器
前端·javascript
IT古董2 小时前
全面理解 Corepack:Node.js 的包管理新时代
前端·node.js·corepack
学习3人组2 小时前
清晰地说明 NVM、NPM 和 NRM 在 Node.js 开发过程中的作用
前端·npm·node.js