javascript - 如何在 Webpack 中覆盖惰性 import() 解析
问题描述
我有一个奇怪的要求。我正在尝试为 webpack 实现一个插件,该插件可以动态解析块的 CDN 位置。我知道 publicPath 选项及其行为,但是,就我而言,这是不可能的。因为使用我们的 CDN,我们不会返回包含文件相对路径的 URL,而是返回一个我们用来创建 URL 的魔术 ID,而不管文件位置/名称如何。
例如:
/static/js/chunk.1.js -> https://cdn.example/asset/1234
main.js -> https://cdn.example/asset/1122
我可以创建一个块名称/位置映射,并且我可以在我的最终输出中包含此映射以用于运行时解析的额外包大小开销。我很难找到理想情况下覆盖默认的 webpack import() 行为。
理想情况下,相同的语法:
const chunkResult = await import('/lazy-loaded');
基本上会转化为:
const chunkResult = await load('https://cdn.example/assets/1234');
任何有关如何完成此操作的建议或“您不能这样做,请提交功能请求”都会很棒。
解决方案
你可以通过__webpack_public_path__
.
例如,许多解决方案都可以通过__webpack_public_path__
在 CDN 的脚本标记返回错误时动态更改来提供从 CDN 到您的服务的回退。
写一个简单的:
__webpack_public_path__ = window.cdnEndpoint
webpack 会将其编译到 publicPath。
推荐阅读
- octobercms - 如何在 octobercms 的页面上包含 php 代码?
- python - 我如何最好地优化我的参数、激活选择、优化器等。在 LSTM 中?
- javascript - 在 javascript 中读取 webconfig 应用程序设置时出错
- angular - 角材料自动完成滚动问题
- ruby-on-rails - 依赖设置为销毁,改为无效
- elasticsearch - 仅创建索引的弹性特权
- hololens - 如何使 Hololense 2 的显示屏正常工作?
- saml - SAML 2.0 中的可审计性
- r - lambda 对 ARIMA 有什么影响?
- sql - 根据另一列的值查询该列