Я использую Symfony plus Webpack, для разработки я использую webpack-dev-server
с горячей перезагрузкой. Проблема, однако, заключается в том, что Symfony всегда загружает ресурсы prod (так как он читает последний сгенерированный файл manifest.json
, а не обновленную версию сервером разработки Webpack.
Вопрос: Есть ли способ для сервера Webpack dev постоянно хранить обновленный файл manifest.json
на диске, на который я мог бы ссылаться в Symfony, или есть способ сказать Symfony использовать Webpack для получения информации об активах?
Например, шаблон ветки с <link rel="manifest" href="{{ asset('dist/manifest.json') }}">
и <link rel="stylesheet" href="{{ asset('styles.css') }}" type="text/css" media="all">
сгенерирует следующий html:
<html>
<head>
<link rel="manifest" href="http://localhost:8080/dist/manifest.json">
<link rel="stylesheet" href="http://localhost:8080/dist/styles.a5be97398486588dc90e.css" type="text/css" media="all">
[...]
</head>
[...]
, в то время как он должен генерировать в режиме разработки:
<html>
<head>
<link rel="manifest" href="http://localhost:8080/dist/manifest.json">
<link rel="stylesheet" href="http://localhost:8080/dist/styles.css" type="text/css" media="all">
[...]
</head>
[...]
manifest.json
файл выглядит так http://localhost:8080/dist/manifest.json:
{
"styles.css": "/dist/styles.css"
}
Файл manifest.json
выглядит так http://localhost/dist/manifest.json:
{
"styles.css": "/dist/styles.a5be97398486588dc90e.css"
}
, что означает, что Symfony учитывает только производство manifest.json
файл, но не версия dev.
Команда для создания версии ресурсов prod: NODE_ENV=production webpack --mode production
, если я запускаю NODE_ENV=development webpack --mode development
, который генерирует файл manifest.json
, все работает, однакоЯ бы предпочел, чтобы Symfony получал информацию напрямуюсервером разработки Webpack, чтобы всегда быть в курсе.
Конфиги:
// config/packages/assets.yaml
framework:
assets:
json_manifest_path: '%kernel.project_dir%/public/dist/manifest.json'
// config/packages/dev/assets.yaml
framework:
assets:
base_urls: "%env(resolve:ASSET_BASE_URL)%" # resolves to http://localhost:8080