如何不缓存加载器输出
How to NOT cache loader output?
Webpack 默认缓存加载器
比如说,我有以下加载器,
module.exports = function(source) {
// Note I'm explicitly saying not to cache
this.cacheable(false);
return 'module.exports = ' + Math.random();
}
每次我require('./asset.ext')
,我都会得到相同的随机数。如何从加载程序获得同一资源的不同输出。
我打算在哪里使用它?
我想用JS和CSS require('./image.png')
。在 css 中,css-loader
帮助我实现这一点,其中url(./image.png)
根据需要进行处理。加载器不知道发行人。所以我写了一个插件,告诉加载器关于发行者并且工作正常。但是当我开始在 CSS 和 JS 中使用它时,无论哪个先被调用,加载器都会缓存输出,并返回相同的输出。我想防止这种情况。对于JS,我想返回一个对象,对于CSS,我想返回一个字符串。
有点笨拙,但为什么不创建一个从image.png
到image-copy.png
的符号链接,然后对JS使用一个文件名,为CSS使用另一个文件名?就要求而言,它们是两个不同的文件,因此它将再次加载它。
回答我自己的问题,
我没有尝试不缓存加载器,而是为返回的对象编写了一个覆盖toString
,以便在 CSS 中需要时触发此方法并得到所需的字符串。
在这里实施 - https://github.com/boopathi/image-size-loader/blob/master/index.js#L14-L19
module.exports = JSON.stringify(o);
module.exports.toString = () => JSON.stringify(o.src);
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 将“加载更多”添加到从Google电子表格中通过$.getJSON接收的数据输出中
- phantomjs - 在页面加载后执行Javascript函数,然后输出新的更改
- 刷新 php 输出而不重新加载页面
- 谷歌网络应用程序加载脚本不适用于HTML输出
- 分别设置输出文件夹和文件 url;带有 Django 的 Webpack 文件加载器
- 创建一个数组并输出其代码定义以进行预加载
- 如何在页面重新加载后输出jsignature
- 尝试将json输出加载到谷歌地图中
- 隐藏验证输出标记(✘)在加载/重新加载页面时隐藏符号
- 如何在不刷新、显示输出、重新加载表单、冲洗和重复的情况下提交表单
- 加载PHP输出的JS
- Div高度在页面加载时输出为0
- 提交表单而不刷新页面并将输出加载到html中
- 重新加载jQuery AJAX会复制JSON输出结果
- 如何不缓存加载器输出
- ASP.NET MVC4 显示模式不加载 TypeScript 输出
- 当从javascript文件加载css时,我应该如何保持html输出隐藏,直到css文件被加载
- 通过AJAX加载页面时输出Javascript变量