assetic 不会在 PROD Symfony 2 中生成



正如标题中所述,我的 js/css/assetic 中的图像在生产中没有生成

我把它们都放在底座.html.twig 像这样

    {% block stylesheets %}
        {% stylesheets
            '@BlubirdCrmBundle/Resources/public/css/bootstrap.min.css'
            '@BlubirdCrmBundle/Resources/public/css/bootstrap-theme.min.css'
            '@BlubirdCrmBundle/Resources/public/css/bbgrid.css'
            ....
            output='css/compiled/all.css' %}
            <link rel="stylesheet" href="{{ asset_url }}" />
        {% endstylesheets %}
    {% endblock %}
    {% javascripts
        '@BlubirdCrmBundle/Resources/public/js/jquery-2.1.3.min.js'
        '@BlubirdCrmBundle/Resources/public/js/bootstrap.min.js'
        ....
        output='js/compiled/all.js' %}
        <script src="{{ asset_url }}"></script>
    {% endjavascripts %}

和我的图片:

{% image '@BlubirdCrmBundle/Resources/public/images/loadingSpinner.gif' %}<img id="spinner" src="{{ asset_url }}"/>{% endimage %}

在开发中一切正常

UT 在 prod 中,它不会生成我随着时间的推移添加的新 JS 和图像。

在我的应用程序中,我的内核是这样生成的:

$kernel = new AppKernel('prod', false);

在任何人告诉我之前

./console cache:clear --env=prod --no-debug
./console assetic:dump --env=prod --no-debug

我无法使用我的 ovh 服务器访问控制台,所以我必须在服务器上手动连接并删除缓存中的文件

我试图删除/web 文件中的旧编译文件,但没有生成任何内容......

关于如何在没有控制台的情况下做到这一点的任何想法?

谢谢!

您需要找到一种方法来执行此操作:

./console assetic:dump --env=prod --no-debug

在开发模式下,资产通过控制器链接到资产。控制器找到正确的资产,在必要时构建它并交付给浏览器。这就是为什么它在开发模式下工作的原因。

在生产模式下,这种方法太慢,因此 assetic 需要预先生成文件,以便可以静态提供这些文件。 这就是为什么您需要找到一种方法来执行该命令。

如果无法在服务器上

运行控制台命令,则可以在开发服务器上生成生产资产,将文件添加到源代码管理,然后将它们与其余代码一起部署。

有点跑题了,但资产通常被更流行和独立于框架的前端工具(如gulp)所取代。默认情况下,Assetic不再与symfony 3捆绑在一起。尽管几个月前它在symfony文档中被描述为"最佳实践"。

最新更新