为什么 webpack 需要一个我不使用的导入加载器?
Why does webpack need a loader for an import which I don't use?
假设我的 index.js
中有这个
import { foo } from "./extra.js";
然后在我的extra.js
中有这个
export function foo () { return 0; }
export function bar () { import("./baz.svg"); }
当我尝试构建时,我收到有关 baz.svg
的错误:“您可能需要适当的加载程序来处理此文件类型”。
显然我从不在我的代码中使用 bar
,那么为什么 webpack 试图捆绑它呢?以及如何避免这种情况?
在“规则”节点下的 webpack.config.json 中添加这些行:
{
test: /\.(png|jpg|gif|svg)$/i,
use: [
{
loader: 'url-loader',
options: {
limit: 8192
}
}
]
},
您要实现的是 tree shaking。要启用 tree shaking,您必须配置一些优化设置,如图所示 here。
然而,即使有这些设置,这个问题也无法解决。那是因为 - 死代码消除或 tree shaking 发生在模块解析发生之后。您可以将其视为生成后运行以优化捆绑包的东西。 Webpack 将尝试找到用于导入 svg
文件的加载器。
您可以尝试的东西很少,但 none 无需任何安装即可满足您的需求:
假设我的 index.js
import { foo } from "./extra.js";
然后在我的extra.js
中有这个
export function foo () { return 0; }
export function bar () { import("./baz.svg"); }
当我尝试构建时,我收到有关 baz.svg
的错误:“您可能需要适当的加载程序来处理此文件类型”。
显然我从不在我的代码中使用 bar
,那么为什么 webpack 试图捆绑它呢?以及如何避免这种情况?
在“规则”节点下的 webpack.config.json 中添加这些行:
{
test: /\.(png|jpg|gif|svg)$/i,
use: [
{
loader: 'url-loader',
options: {
limit: 8192
}
}
]
},
您要实现的是 tree shaking。要启用 tree shaking,您必须配置一些优化设置,如图所示 here。
然而,即使有这些设置,这个问题也无法解决。那是因为 - 死代码消除或 tree shaking 发生在模块解析发生之后。您可以将其视为生成后运行以优化捆绑包的东西。 Webpack 将尝试找到用于导入 svg
文件的加载器。
您可以尝试的东西很少,但 none 无需任何安装即可满足您的需求: