У меня есть проект, в котором я развертываю один и тот же пакет JSP для веб-пакетов в разных средах. В некоторых средах используется CDN для обслуживания статических активов, таких как JS файлы, а некоторые из них не имеют и просто имеют статические активы, которые обслуживаются из того же корня, что и остальная часть проекта.
В этом проекте также есть несколько асинхронных фрагментов webpack, поэтому я определяю publicPath
, чтобы они были правильно загружены.
При развертывании в не-cdn webpack отлично работает со статически настроенным publicPath
в моей конфигурации webpack, обслуживающей все, что-то вроде /static/
.
Однако при развертывании в средах, в которых используется CDN, это больше не работает для асинхронных фрагментов, потому что webpack попытается получить к ним доступ из /static/
, что означает, что они запрашивают основной сервер приложений, а не CDN.
Ясно, что я могу перестроить проект с помощью моего CDN в publicPath
, чтобы решить эту проблему. Тем не менее, я бы предпочел иметь возможность использовать только один пакет развертывания в обеих ситуациях.
Мое серверное приложение предоставляет глобальный javascript, описывающий корневой путь CDN по строкам window.staticCDNRoot
. И этот глобальный также присутствует в ситуациях, отличных от cdn, просто указывая на сервер приложений - поэтому он всегда разрешает правильное местоположение для загрузки статических активов.
Есть ли способ заставить Webpack использовать это во время выполнения, чтобы publicPath
стал window.staticCDNRoot + publicPath
без огромного хакера?
Или есть ли лучшее решение этой проблемы?