У меня есть проект, в котором я развертываю один и тот же пакет 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 без огромного хакера?
Или есть ли лучшее решение этой проблемы?