
webpack5 缓存机制对自定义 loader 的影响
在编写 webpack loader 时,指定不同的参数以引入不同的 vue 组件。然而,在 webpack5 中,缓存机制存在一个问题。第一次启动项目后,后续更改参数并不会触发 loader,因为 webpack5 缓存了之前构建的结果。
对于需要缓存机制的场景,有两种解决方案:
禁用缓存
可以通过设置 loader 的 this.cacheable 属性为 false 来禁用缓存。这样,每次修改参数时都会重新触发 loader。
module.exports = function(source, map) {
this.cacheable(false);
// ...
};指定文件不走缓存
如果只需要对某个特定文件禁用缓存,可以使用 webpack 的 cache 属性。
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.vue$/,
loader: 'my-loader',
options: {
cache: false
}
}
]
}
};通过设置 cache 为 false,webpack 将不会缓存此文件的构建结果。










