webpack-dev-server 未重新加载

2024-02-12

我正在使用 webpack 5,目前有以下设置:

  • webpack.prod.js - 我有一些用于生产的特定配置(例如图像压缩、开发工具、CSS 缩小、特定元标记值)
  • webpack.dev.js - 我有一些用于开发的特定配置(例如,无图像压缩、无 CSS 缩小、特定元标记值)

我目前面临的问题是我无法获得webpack 开发服务器实时重新加载工作(这适用于所有文件类型)。我已经阅读了文档,但到目前为止还没有运气。

据我了解,在开发模式下,webpack 在内存中而不是在磁盘中运行内容(这应该更快,这很棒!)。由于某种原因,观察者似乎没有对指定文件中的更改做出反应devServer.watchFiles配置。我期待 webpack 检测打字稿文件的更改,编译它并重新加载,但这并没有发生。

您可以在下面找到这两个文件的内容。

webpack.prod.js:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const TerserPlugin = require('terser-webpack-plugin');
const ImageMinimizerPlugin = require('image-minimizer-webpack-plugin');
const CopyPlugin = require('copy-webpack-plugin');
const buildPath = path.resolve(__dirname, 'dist');

module.exports = {
  //devtool: 'source-map',
  entry: {
    index: "./src/index/index.ts",
    error: "./src/error/error.ts",
  },
  output: {
    filename: "js/[name].[contenthash].js",
    path: buildPath,
    clean: true,
  },
  module: {
    rules: [{
        test: /\.ts$/i,
        exclude: /node_modules/,
        use: "ts-loader",
      },
      {
        test: /\.html$/i,
        exclude: /node_modules/,
        use: "html-loader",
      },
      {
        test: /\.css$/i,
        exclude: /node_modules/,
        use: [
          MiniCssExtractPlugin.loader,
          "css-loader",
        ]
      },
      {
        test: /\.png$/i,
        exclude: /node_modules/,
        type: "asset/resource",
        generator: {
          filename: "img/[name].[contenthash][ext]",
        },
      },
      {
        test: /\.(woff|woff2|ttf)$/i,
        exclude: /node_modules/,
        type: "asset/resource",
        generator: {
          filename: "fonts/[name].[contenthash][ext]",
        },
      },
      {
        test: /\.mp3$/i,
        exclude: /node_modules/,
        type: "asset/resource",
        generator: {
          filename: "[name].[contenthash][ext]",
        },
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./src/index/index.ejs",
      inject: "body",
      chunks: ["index"],
      filename: "index.html",
      meta: {
        "robots": {
          name: "robots",
          content: "index,follow"
        },
      },
    }),
    new HtmlWebpackPlugin({
      template: "./src/error/error.html",
      inject: "body",
      chunks: ["error"],
      filename: "error.html",
    }),
    new MiniCssExtractPlugin({
      filename: "css/[name].[contenthash].css",
      chunkFilename: "css/[id].[contenthash].css",
    }),
    new CopyPlugin({
      patterns: [{
        from: "src/robots.txt",
        to: "robots.txt",
      }, ],
    }),
  ],
  optimization: {
    minimize: true,
    minimizer: [
      new TerserPlugin({
        parallel: true,
      }),
      new CssMinimizerPlugin(),
      new ImageMinimizerPlugin({
        minimizer: {
          implementation: ImageMinimizerPlugin.imageminMinify,
          options: {
            plugins: [
              ["imagemin-pngquant", {
                quality: [0.5, 0.9]
              }],
            ],
          },
        },
      }),
    ],
  },
};

webpack.dev.js:

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
    mode: "development",
    devtool: "eval-cheap-module-source-map",
    entry: {
        index: "./src/index/index.ts",
        error: "./src/error/error.ts",
    },
    devServer: {
        watchFiles: [path.resolve(__dirname, "src/**/*")],
        open: true,
    },
    module: {
        rules: [
            {
                test: /\.ts$/i,
                exclude: /node_modules/,
                use: "ts-loader",
            },
            {
                test: /\.html$/i,
                exclude: /node_modules/,
                use: "html-loader",
            },
            {
                test: /\.css$/i,
                exclude: /node_modules/,
                use: ["style-loader", "css-loader"]
            },
            {
                test: /\.png$/i,
                exclude: /node_modules/,
                type: "asset/resource",
                generator: {
                    filename: "img/[name].[contenthash][ext]",
                },
            },
            {
                test: /\.(woff|woff2|ttf)$/i,
                exclude: /node_modules/,
                type: "asset/resource",
                generator: {
                    filename: "fonts/[name].[contenthash][ext]",
                },
            },
            {
                test: /\.mp3$/i,
                exclude: /node_modules/,
                type: "asset/resource",
                generator: {
                    filename: "[name].[contenthash][ext]",
                },
            },
        ],
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: "./src/index/index.ejs",
            inject: "body",
            chunks: ["index"],
            filename: "index.html",
            meta: {
                "robots": { name: "robots", content: "noindex, nofollow" },
            },
        }),
        new HtmlWebpackPlugin({
            template: "./src/error/error.html",
            inject: "body",
            chunks: ["error"],
            filename: "error.html"
        }),
    ],
    optimization: {
        runtimeChunk: "single",
    },
};

该问题与 WSL 有关。更具体地说,在 Windows 文件系统上的 WSL 中运行 webpack(例如,在/mnt/c/Users/MyUser/Documents/MyProject).

将项目移动到 WSL 文件系统后(例如,位于/home/MyUser/MyProject)我能够实时重新加载工作。

虽然这个问题 https://stackoverflow.com/questions/72785704/hmr-not-working-parcel-webpack-5-in-wsl2-ubuntu-22-04提到Parcel和Webpack,是类似的。我发现答案提供了围绕该问题的良好背景:https://stackoverflow.com/a/72786450/3685587 https://stackoverflow.com/a/72786450/3685587

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack-dev-server 未重新加载 的相关文章

  • webpack-cli 未知参数:--output

    我的 npm node js 版本 当我尝试运行npm dev命令 日志文件 0 info it worked if it ends with ok 1 verbose cli usr local bin node usr local bi
  • AngularJS 和 Webpack 集成

    我正在寻找一些使用帮助webpack http webpack github io docs 对于大型 AngularJS 应用程序 我们使用基于功能的文件夹结构 每个功能 页面都有一个模块 并且它们有控制器 指令 我已经成功配置了 web
  • webpack - 如何将捆绑包提取到各个组件

    我想从bundle js 一个webpack文件 中解压 提取所有组件和js文件 我只留下这个文件 我已经用谷歌搜索并尝试了几种方法来解压捆绑js文件 但它没有成功 我也尝试过该解决方案 请查找参考 如何提取Webpack中的bundle
  • 使用 webpack 动态提供图像

    我有一个关于 webpack 和服务图像的问题 我有一个 webpack 配置 它构建了一个 React webapp 并且还提供来自特定文件夹的 jpg 文件 但是 如果我从我的网络应用程序下载新图像并将其添加到此文件夹中 会发生什么情况
  • 如何从捆绑 .spec.js 文件中排除 webpack

    我的 Package bundle 读取 var reqContext require context true js reqContext keys map reqContext 其中基本上包括所有 js 文件 我希望表达式排除任何 sp
  • Karma 与 Webpack 和 Typescript 不执行任何测试

    我试图弄清楚如何将 Karma 测试运行器与 Webpack 和 Typescript 源文件一起使用 以此源文件作为唯一的测试文件为例 测试规格 var message string yay alert message describe
  • 如何编写用于退出 JavaScript 的 Typescript 定义文件

    我想使用 React 组件https github com alexkuz react json tree https github com alexkuz react json tree这是在我的 typescript 项目中用 Java
  • Angular 5 webpack 3 aot

    我正在尝试使用 webpack 3 和 Angular 5 进行 aot 构建 但是网上有很多教程 没有一个没有问题地显示完整的示例 到目前为止我已经有了以下配置 对于那些对路径有疑问的人 我在 java 应用程序中使用它 webpack
  • Webpack 5 和 ESM

    我想我已经阅读了 SO 上的每个线程以及互联网上的每个相关页面 所有内容都有一些问题的变体 I want 使用 webpack 捆绑我的 Web 应用程序 在我的源 js 中使用 ES 模块并将它们转译为更广泛的浏览器支持 在我的 webp
  • 为什么 Webpack 忽略我的 CSS 文件?

    我正在尝试让 webpack 将我的 CSS 文件 使用 PostCSS 编译为单独的文件 从文档来看 这似乎正是 ExtractTextPlugin 应该做的 但是 我无法让 webpack 对我的 CSS 文件执行任何操作 相关项目结构
  • Webpack 加载器与插件;有什么不同?

    webpack 中的加载器和插件有什么区别 The 插件文档 https webpack github io docs using plugins html只是说 使用插件添加通常与 webpack 中的捆绑包相关的功能 我知道 babel
  • 如何从 docker 容器运行 webpack 构建?

    我正在制作的应用程序是用 ES6 编写的 其他好东西是由 Docker 容器内的 webpack 转译的 目前 一切工作从创建内部目录 安装依赖项到创建编译的捆绑文件 当运行容器时 它说 dist bundle js 不存在 除非我在主机目
  • 使用 typescript 时 html-webpack-plugin 出现太多错误

    我正在使用 Webpack 和 typescript 启动一个项目 但是当我尝试运行开发服务器时 我在 html webpack plugin 上遇到很多错误 这是我的输出 gt email protected cdn cgi l emai
  • npm install -D sass-loader node-sass Vue.js 2021

    您好 问题是为 Vue js 设置 SASS 我跑 Node js 15 7 0 Vue js vue cli 4 5 11 这是我在运行此命令时在控制台中遇到的错误 npm install D sass loader 节点 sass np
  • Sentry 与 @sentry/webpack-plugin 和 heroku

    我正在使用 webpack 来构建我的应用程序 它可以在本地使用 sentry webpack plugin 它自动生成版本并将源映射上传到 Sentry 但是 如果我尝试在 Heroku 上构建相同的应用程序 则会出现以下错误 Error
  • 使用react_on_rails gem 创建演示项目时的节点问题

    我正在尝试遵循这个tutorial https shakacode gitbooks io react on rails content docs tutorial html使用 gem react on rails 创建一个虚拟项目 我想
  • webpack 加载器并包含

    我是 webpack 的新手 我正在尝试了解加载器及其属性 例如测试 加载器 包含等 这是我在 google 中找到的 webpack config js 的示例片段 module loaders test js loader babel
  • ./types 的大小写与底层文件系统不匹配

    所以我从 eslint 收到了一些奇怪的警告 types 是流类型文件 我认为 eslint 将 checkbox 读取为小写 而实际上它是 Checkbox 大写 C I try git mv casesensitive tmp git
  • 无法在 .tsx 文件中导入 CSS 模块

    我正在使用 typescript 构建基本的 React 应用程序 但无法导入 CSS 文件索引 tsx file 我能够导入索引 css文件如下 import index css this import gives typescript
  • 无法使用 webpack 加载 Node 原生插件

    虽然我正在使用vue cli在生成 webpack 配置的示例代码中 没有任何特定于 vue 的内容 我像这样创建示例应用程序 vue init webpack webpack modules example 生成webpack base

随机推荐

  • 曾经有效的相同代码现在返回异常

    我正在尝试在几个股票代码之间进行简单的关联 我之前运行过相同的代码并且有效 现在 它返回一个异常 该异常引用了一堆文件并包含我不理解的其他消息 此外 必须在控制台中手动停止该命令 我对 python 和一般编程都很陌生 我正在使用 Spyd
  • 子活动完成时有时不会调用 onActivityResult

    在测试过程中 我注意到有时子活动的 finish 不会执行 onActivityResult 大多数时候它工作正常 但我无法弄清楚这个问题何时以及为何发生 子活动开始 public void launchSubActivity Class
  • 使用Java通过FTP将所有目录复制到服务器

    我需要将一个目录从本地磁盘复制到服务器 该目录包含很多目录 子目录和文件 想想目录的层次结构树 以下是复制一个文件的示例 public void saveFilesToServer throws IOException FTPClient
  • “保留执行”的含义

    阅读答案来自在c标识符中使用下划线的规则是什么 https stackoverflow com questions 228783 what are the rules about using an underscore in a c ide
  • 为什么并行化会如此显着地降低性能?

    我有一个 OpenMP 程序 数千行 无法在这里重现 其工作原理如下 它由工作线程和任务队列组成 一个任务由一个卷积组成 每次工作线程从工作队列中弹出任务时 它都会执行所需的卷积 并可选择将更多卷积推送到队列中 没有特定的 主 线程 所有工
  • 使用 React Router 和 Redux Simple Router 进行 onEnter 转换不会渲染新路由的组件

    我有一个使用react 0 14 redux 3 05 react router 1 0 3 和 redux simple router 2 0 2 的应用程序 我正在尝试根据商店状态为我的一些路线配置 onEnter 转换 转换挂钩成功触
  • 一个视图中的两个模型模板 - Backbone/Marionette

    我试图在一个视图中使用两个模型 并使用这两个模型的模板 我正在和木偶一起工作 这是我对视图的初始化 main app layout header show new APP Views HeaderView model oneModel mo
  • 如何将信号从一个程序发送到另一个程序?

    我使用消息队列作为两个程序之间的 IPC 现在我想使用消息队列将数据从一个程序发送到另一个程序 然后通过信号 SIGINT 通知它 我不知道如何将信号从一个程序发送到另一个程序 如果有解决方案 任何人都可以提供示例代码吗 include
  • 我应该如何选择如何使用 R 进行打印? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 R 中有多种显示文本的方法 cat print write writeLines sink message 以及我现在不记得的其他替代
  • 为什么 XML 命名空间通常以 http://... 开头?

    例如 WPF 命名空间是 xmlns http schemas microsoft com winfx 2006 xaml presentation 如果我定义自己的命名空间 它也应该以http开头吗 不是http吗误导性的 命名空间的值没
  • 在方法参数中使用 NotNull 注解

    我刚刚开始使用 NotNull使用 Java 8 进行注释并得到一些意想不到的结果 我有一个这样的方法 public List
  • 自定义 django 管理模板不起作用

    我一直在尝试为 Django 工作的管理页面获取自定义模板 但没有成功 我已经阅读了 django 文档和几个博客 它们将其解释为一个如此简单的步骤 我认为这是如此 截至目前 管理页面可以工作 但我自己重写的 CSS 或模板不起作用 我的设
  • 每个优秀的 Java/Java EE 开发人员都应该能够回答的问题? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无法重新分配$this?

    我的服务器上有一个 php 版本 4 的脚本 现在它已更改为 php5 并且该脚本不再起作用 我收到此错误 致命错误 无法在 URL database php 第 88 行中重新分配 this 该文件中有一个具有函数的类 里面是88行 th
  • 大稀疏矩阵到三角矩阵 R

    我在 R 中有一个非常大的 大约 9100 万个非零条目 sparseMatrix 如下所示 gt myMatrix a b c a 1 2 b 1 c 2 我想将其转换为三角矩阵 上或下 但是当我尝试 myMatrix myMatrix
  • Applescript 抓取 GIF 文件位置,将其复制到剪贴板,然后粘贴

    我正在尝试编写一个苹果脚本来定位 复制和粘贴图像文件 以下代码适用于jpegs and pngs set thePath to file location set the clipboard to read thePath as class
  • glibc/NPTL/Linux 稳健互斥体中的竞争条件?

    在对该问题的评论中在 Unix 崩溃时自动释放互斥锁 https stackoverflow com questions 4149266 automatically release mutex on crashes in unix rq 1
  • 从“NSDecimal”或“NSDecimalNumber”转换为 C# 的“decimal”类型

    我有一个NSDecimalNumber来自 StoreKit 的SKProduct类 我想将其转换为 C 的decimal类型以尽量减少精度损失 有没有直接的方法来做这样的事情 我想我的两个选择是 假设我了解每个的二进制实现并进行我自己的按
  • AngularJS 将数据传递给 $http.get 请求

    我有一个执行 http POST 请求的函数 代码如下 这很好用 http url user update path method POST data user id user id draft true 我有另一个 http GET 函数
  • webpack-dev-server 未重新加载

    我正在使用 webpack 5 目前有以下设置 webpack prod js 我有一些用于生产的特定配置 例如图像压缩 开发工具 CSS 缩小 特定元标记值 webpack dev js 我有一些用于开发的特定配置 例如 无图像压缩 无