Symfony Encore несколько манифестов активов - PullRequest
0 голосов
/ 03 октября 2018

У меня есть вопрос относительно Encore в Symfony 3.4 и управления версиями ресурсов.

В моем webpack.config.js у меня есть две конфигурации.Первый - для файлов JS, второй - для компиляции .less.

Каждая конфигурация сбрасывается с помощью Encore.reset ()

Выходные пакеты генерируют манифест с версиями через .enableVersioning, поэтому яиметь два manifest.json в

web/js/manifest.json
web/stylesheets/manifest.json

Согласно документам, чтобы мои активы были загружены через манифест, мне нужно объявить его в config.yml

   assets:
        base_path: "%myapp.http.site_assets_suffix%" 
        stylesheets:
            json_manifest_path: "%kernel.project_dir%/web/assets/stylesheets/manifest.json"

Если я хочу дать ссылку наstyle.css генерируется webpack, я использую

asset("stylesheets/style.css")

Но в моем приложении у меня есть два манифеста, и я думаю, что это невозможно изменить из-за двух конфигураций Encore.

У меня естьпопытался добавить что-то вроде

packages:
     stylesheets:
                json_manifest_path: "%kernel.project_dir%/web/assets/stylesheets/manifest.json"
     js:
                json_manifest_path: "%kernel.project_dir%/web/assets/js/manifest.json"

, потому что я где-то видел это, но, к сожалению, это не сработает вообще.

Я думал о объединении двух манифестов в один в последнем веб-пакететочка входа, но это может занять много времени.

Есть ли другое решение, кроме объединения manfiests или объединения js + less в одну большую задачу на бис?

1 Ответ

0 голосов
/ 28 мая 2019

Я нашел решение

assets:
    base_path: 'path%'
    packages:
        noversion:
            version: false
            version_format: "%%1$s"
            base_path: "path%"
        stylesheets:
            json_manifest_path: "%kernel.project_dir%/web/assets/stylesheets/manifest.json"
        js:
            json_manifest_path: "%kernel.project_dir%/web/assets/js/manifest.json"
        admin:
            json_manifest_path: "%kernel.project_dir%/web/assets/js/admin/manifest.json"

А затем в .twig файлах его нужно назвать

    <script src="{{ asset('assets/DIRNAME/WEBPACK_ENTRY_NAME_HERE', ASSET_PACKAGE_NAME_HERE) }}"></script>

В моем случае

<script src="{{ asset('assets/js/backend.js', 'js') }}"></script>

Где WEBPACK_ENTRY_NAME - имя пакета Webpack / Encore от webpack.config.js, в моем случае

.setOutputPath('./web/assets/js')
    .setPublicPath('/assets/js')
    .addEntry('backend',

Извините за задержку с ответом, но я забыл об этом.

...