NoneWebpack publicPath - использовать разные URL для повторного использования пакетов
Учитывая следующий сценарий.
Сборка webpack, производящая 3 пакета, и CI, публикующий их в CDN, вот так (каждый идентификатор сборки создает новую папку):
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-адрес, который веб-пакет затем использует для загрузки ресурса, что-то вроде:
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'
- запрос функции webpack для использования
__webpack_public_path__
1 ответ
По состоянию на август 2019 года, это в настоящее время невозможно с webpack @ 4. Запрос на добавление был объединен с webpack@next
и предоставит функцию, показывающую, как URL генерируется в webpack @ 5.
__webpack_get_script_filename__ = (asset: string) => string