我有一个关于Symfony 3.4中的Encore和 Assets 版本控制的问题。

在我的webpack.config.js中,我有两种配置。
第一个用于JS文件,另一个用于编译.less。

每个配置都由Encore.reset()重置

输出包通过.enableVersioning生成带有版本控制的 list ,所以我有两个manifest.json

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

根据文档,要通过 list 加载我的 Assets ,我需要在config.yml中声明它
   assets:
        base_path: "%myapp.http.site_assets_suffix%"
        stylesheets:
            json_manifest_path: "%kernel.project_dir%/web/assets/stylesheets/manifest.json"

如果我想链接到webpack生成的style.css,我使用
asset("stylesheets/style.css")

但是在我的应用程序中,我有两个 list ,并且由于两个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"

因为我在某个地方看到了它,但不幸的是,这根本不起作用。

我曾考虑过在最后一个Webpack入口点将两个 list 合并为一个 list ,但这可能很耗时。

除了将manfiests合并或将js +较少的编译合并为一项大的Encore任务之外,还有其他解决方案吗?

最佳答案

我找到了解决方案

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_NAMEwebpack.config.js中的Webpack/Encore捆绑包的名称
.setOutputPath('./web/assets/js')
    .setPublicPath('/assets/js')
    .addEntry('backend',

抱歉,回答延迟,但我忘了。

10-08 01:22