如何使用SnowpackJS加载HDR文件 适配THREE.js开发需求
问题解决方案
该需求完全可以实现,配置失效的核心原因是Snowpack插件执行顺序和webpack插件的资源拦截逻辑冲突,具体解决步骤如下:
- 第一步:调整插件执行顺序
Snowpack插件按数组从上到下的顺序执行,你当前把@snowpack/plugin-webpack放在了snowpack-plugin-raw-file-loader前面,webpack会优先拦截所有未明确配置的资源类型,导致raw loader根本没机会处理.hdr文件。把raw loader插件移到webpack插件前面即可:// Snowpack Configuration File /** @type {import("snowpack").SnowpackUserConfig } */ export default { mount: { public: { url: '/'}, js: { url: '/dist' }, }, plugins: [ ["snowpack-plugin-raw-file-loader", { exts: [".txt", ".md", ".svg", ".hdr"], }], [ '@snowpack/plugin-webpack', {} ], '@snowpack/plugin-postcss', '@snowpack/plugin-sass' ], // 其余配置保持不变 packageOptions: {}, devOptions: { tailwindConfig: './tailwind.config.js', }, buildOptions: {}, }; - 第二步:清除缓存重启服务
修改配置后执行snowpack dev --reload清除Snowpack本地缓存重启服务,避免旧缓存影响配置生效。 - 第三步:验证导入逻辑
THREE.js加载HDR时如果使用RGBELoader,直接传入raw loader返回的资源路径即可,导入语法参考:import hdrUrl from './xxx.hdr'; import { RGBELoader } from 'three/addons/loaders/RGBELoader.js'; new RGBELoader() .load(hdrUrl, function (texture) { // 后续HDR纹理处理逻辑 });
如果调整顺序后还是无法加载,可以额外配置Snowpack的knownEntrypoints参数明确指定.hdr类型为可识别资源:
export default { // 其余配置不变 packageOptions: { knownEntrypoints: ['*.hdr'] } }
内容的提问来源于stack exchange,提问作者Abhiraam Eranti
相关产品推荐
相关产品推荐

