worker-loader Inline 做什么?

问题描述

我的理解是以下 Webpack worker-loader 配置:

...
module: {
    rules: [
        {
            test: /worker\.js/,loader: "worker-loader",options: {
                inline: 'fallback',}
        }
        { ... }
    ]
}
...

会将工作文件(在本例中命名为 worker.js)与其他 JS 文件捆绑到输出文件中,从而产生单文件输出。然后使用

在应用程序中加载文件
import Worker from "worker-loader!./worker.js";

将成功加载 Worker。经过测试,似乎我被误解了。 inline 不会将 worker 打包成单个文件;它会在输出目录中创建一个单独的文件

那么,inline 到底在做什么?

解决方法

内联加载器语法允许您在特定实例中覆盖项目中工作器的默认配置。这可能包括为网络工作者分配文件名以输出之类的事情。

它在 Webpack@4.x 中更有用。既然 Webpack@5.x 已经出来了,使用内联加载器的理由越来越少。

此外,Webpack@5.x 中不需要工作加载器。

但现在对于一些可能不受欢迎的消息 - 工作人员必须始终在他们自己的独立文件中,除非您将它们作为 blob 加载,这可能会对您的站点/应用程序产生安全影响。