Javascript 如何不缓存加载程序输出?

Javascript 如何不缓存加载程序输出?,javascript,webpack,Javascript,Webpack,默认情况下,网页包缓存加载程序 喂,我有下面的加载器 module.exports = function(source) { // Note I'm explicitly saying not to cache this.cacheable(false); return 'module.exports = ' + Math.random(); } 每次我需要('./asset.ext'),我都会得到相同的随机数。如何从加载程序中获得相同资源的不同输出 我计划在哪里使用它? 我想需要

默认情况下,网页包缓存加载程序

喂,我有下面的加载器

module.exports = function(source) {
  // Note I'm explicitly saying not to cache
  this.cacheable(false);
  return 'module.exports = ' + Math.random();
}
每次我
需要('./asset.ext')
,我都会得到相同的随机数。如何从加载程序中获得相同资源的不同输出

我计划在哪里使用它?
我想
需要JS和CSS中的('./image.png')
。在css中,
css加载器
,帮助我实现这一点,其中
url(./image.png)
被视为需要。加载者不知道发行人的情况。所以我写了一个插件,告诉加载器关于发行者的信息,并且运行良好。但是当我开始在CSS和JS中使用它时,无论哪个先被调用,加载程序都会缓存输出,并返回相同的输出。我想阻止这一切。对于JS,我想返回一个对象,对于CSS,我想返回一个字符串。

有点老套,但是为什么不创建一个从
image.png
image copy.png
的符号链接,然后用一个文件名来表示JS,用另一个文件名来表示CSS呢?就需求而言,它们是两个不同的文件,因此它将再次加载。

回答我自己的问题

我没有尝试不缓存加载程序,而是为返回的对象编写了一个override
toString
,以便在CSS中需要时触发此方法,并获取所需的字符串

在此实施-


我想原因是因为它是单身。它只是第一次执行,这是在一个普通的JS世界中设计的。您应该将它包装成一个可以在运行时执行的函数,该函数应该在每次调用时为您提供另一个号码。
module.exports = JSON.stringify(o);
module.exports.toString = () => JSON.stringify(o.src);