Возникла необходимость внедрять готовый SPA
в другой проект на страницу. Проект сразу писался под это дело, но всё равно возник ряд проблем, которые нужно было решать. Напишу про 2 из них сюда как шпаргалку.
webpack & dynamic import
Что если ваш проект использует динамический импорт
? Например System.import
. В этом случае webpack
сделает для подгружаемых файлов отдельный chunk
. И грузить он его будет исходя из publicPath
в настройках webpack. Но ведь embedded решения могут быть внедрены по любому пути. Как быть? Всё просто, пишем в точке входа что-нибудь типа: __webpack_public_path__ = window.myPredefinedPath
и дело в шляпе. Магия. До загрузки приложения нужно определить этот window.myPredefinedPath
, webpack его увидит и будет использовать. Сразу отмечу, что надо писать как есть, не window.__webpack…=
, а как-будто эта переменная уже определена в коде. Если на неё ругается eslint
не беда, пишем: // eslint-disable-line
и он более не ругается.
webpack css & url
Возникла проблема с тем, что в стилях указаны пути к шрифтам так, что webpack их найти не может (отдельная тема почему так). Да и не должен, него его это забота. Однако он пытается от-revolve
-ить все пути, что находит в css. Лечится установкой url: false
в cssLoader
-е. После этой настройки пути отдаются как есть без каких-либо проверок.