Symfony 在资产输出中获取资产名称

2022-08-30 07:31:41

我用这样的代码生成我的文件:

{% block head_stylesheets %}
    {% stylesheets
        filter='?uglifycss'
        '@MyBundle/Resources/public/less/myfile.less'
    %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen"/>
    {% endstylesheets %}
{% endblock head_stylesheets %}

它转储一个名为这样的文件:c543k540_myfile_1.css

此文件由资产名称后跟文件名组成:{assetName}_{filename}.css

如何自定义输出以在输出中保留资产名称?

{% block head_stylesheets %}
    {% stylesheets
        output="css/mynewfilename.{assetName}.css"     // <--- Here
        filter='?uglifycss'
        '@MyBundle/Resources/public/less/myfile.less'
    %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen"/>
    {% endstylesheets %}
{% endblock head_stylesheets %}


更新以澄清

我知道,如果我使用name选项,在prod中它会编译成,但我想在调试/开发环境中拥有的是遵循波纹管代码,类似于myouputname.cssmyfile_myouputname_1.css

{% block head_stylesheets %}
    {% stylesheets
        name="myouputname"     // <--- Here
        filter='?uglifycss'
        '@MyBundle/Resources/public/less/myfile.less'
    %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen"/>
    {% endstylesheets %}
{% endblock head_stylesheets %}

感谢您的回复。


答案 1

不再建议使用Assestic来管理Symfony应用程序中的Web资产。相反,请使用 Webpack Encore。https://symfony.com/doc/current/frontend/assetic/index.html#dumping-asset-files

页面特定的JavaScript或CSS(多个条目)在这里描述:https://symfony.com/doc/current/frontend/encore/simple-example.html#multiple-javascript-entries

// webpack.config.js
Encore
    // ... general CSS file here...
    .addStyleEntry('some_page', './assets/css/assetName.css')
;

支持使用 addStyleEntry(),但不建议使用。更好的选择是遵循上面的模式:使用addEntry()指向JavaScript文件,然后从内部需要所需的CSS。


答案 2

推荐