Symfony 4 webpack + изображение дескриптора бис в шаблоне

Используя Symfony 4 с Webpack + Encore + Yarn, я хочу обрабатывать изображения в своих шаблонах, и я не совсем понимаю, как этого добиться.

Я помещаю свое изображение в папку /assets/img/logo.png и использую это в моем webpack.config.js:

.addEntry('logo', './assets/img/logo.png')

И после того, как я бегу:

yarn run encore dev

При этом создаются файлы /public/build/logo.js и /public/build/images/logo.aez323a.png.

Мой вопрос, есть ли способ связать функцию Symfony asset() с именем файла с хешем в имени файла? или мне следует использовать другой способ использования изображения в моих шаблонах?


person Vincent Decaux    schedule 31.12.2017    source источник
comment
Я нашел другой способ. Добавить CopyPlugin stackoverflow.com/a/49183966/7478675   -  person Anthony Ln    schedule 09.03.2018


Ответы (2)


Похоже, вы включили управление версиями .enableVersioning(), каждый раз, когда вы запускаете yarn run encore dev, в вашем пути вывода должен создаваться файл manifest.json, исходя из вашего вопроса, этот путь - / public / build < / сильный>. Поэтому вам нужно будет добавить в свои настройки следующую конфигурацию

config / packages / framework.yaml

framework:
    assets:
        json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'

После этого вы сможете использовать функцию asset() для ссылки по имени, например, asset('public/images/logo.png')

Вы можете найти эту информацию в документации Symfony здесь

person knetsi    schedule 31.12.2017
comment
Очень хороший и чистый ответ, я не нашел его в документе, мой плохой. - person Vincent Decaux; 31.12.2017
comment
Также я думаю, вам будет интересен этот разговор о репозитории wehbpack-encore git github.com/ symfony / webpack-encore / issues / 24 речь идет об обработке статических ресурсов с помощью webpack. - person knetsi; 31.12.2017

Теперь есть copyFiles - официальный плагин для бис: https://symfony.com/doc/current/frontend/encore/copy-files.html

Короче говоря, вы помещаете изображения в / assets / images (или любой другой), во время сборки плагин копирует эту папку в / public / build с той же структурой подпапок. Все, что вам нужно сделать, это добавить несколько строк в /webpack.config.js - плагин активации с переменными «от» и «до».

В Twig используйте эти изображения как обычно с {{asset (path_in_public)}}.

если вы включите сервер разработки для горячей перезагрузки

$ yarn encore dev-server

чем файлы из / assets / images будут доступны в шаблонах twig даже без физической копии в / public.

Файлы будут физически скопированы при выполнении

$ yarn encore prod
person Alorian    schedule 11.03.2019