assetic 不会在 prod symfony 2 中生成

assetic doesn't generate in prod symfony 2

如标题所述,我的 js / css / assetic 中的图像不会在产品中生成

我把它们都放在 base.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 %}

在开发中一切正常

但在产品中它不会生成我随时间添加的新 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

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

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

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

有点偏离主题,但 assetic 通常被更流行的和框架独立的前端工具所取代,例如 gulp。默认情况下,Assetic 不再与 symfony 3 捆绑在一起。尽管几个月前它在 symfony 文档中被描述为 "best practice"。