Ресурс Symfony только читает prod manifest.json, но не веб-сервер разработчика - PullRequest
0 голосов
/ 17 октября 2019

Я использую 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...