3

鉴于以下情况。

一个 webpack 构建生成 3 个包,一个 CI 将它们发布到这样的 CDN(每个构建 ID 生成一个新文件夹):

www.cdn.com/1/application.js
www.cdn.com/1/chunk-a.js
www.cdn.com/1/chunk-b.js

现在,考虑下一个构建产生:

www.cdn.com/2/application.js
www.cdn.com/2/chunk-a.js
www.cdn.com/2/chunk-b.js

其中一些文件可能是相同的,假设没有任何变化,但application.js. 我们有一个生成清单的脚本,它只是比较这两个构建并生成:

{
  files: [
    'www.cdn.com/1/chunk-a.js', 
    'www.cdn.com/1/chunk-b.js', 
    'www.cdn.com/2/application.js'
  ]
}

我们想要挂钩到 webpack 块加载器策略并从构建中加载块1,因为没有理由使任何客户端缓存无效。

更具体地说,我们希望对版本进行修补,以便我们可以在可能的情况下重用静态资产。


我们需要一个钩子来检索请求并返回一个 url,然后 webpack 将使用该 url 来加载资产,例如:

interface Hook {
  (chunk: string): string
}

hook('chunk-a') => 'www.cdn.com/1/chunk-a.js'
hook('chunk-b') => 'www.cdn.com/1/chunk-b.js'
hook('application.js') => 'www.cdn.com/2/application.js'

  1. webpack 功能请求使用__webpack_public_path__
4

1 回答 1

1

根据 2019 年 8 月,目前 webpack@4 无法做到这一点。一个拉取请求已被合并webpack@next,并将提供一个功能,揭示如何在 webpack@5 中生成 url。

__webpack_get_script_filename__ = (asset: string) => string 

https://github.com/webpack/webpack/pull/8462

于 2019-08-04T11:32:26.880 回答