资产不会产生prod symfony 2

时间:2016-02-23 09:00:57

标签: symfony assetic

如标题中所述,我在资产中的js / css / images不会产生prod

我把它们全部放在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 %}

开发中的一切正常

ut in prod它不会生成我随时添加的新js和图像。

在我的应用程序中,我的内核生成如下:

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

在有人告诉我之前

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

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

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

没有控制台如何做到这一点的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

有点偏离主题,但资产通常被替换为更受欢迎和框架独立的前端工具,如gulp。默认情况下,Assetic不再与symfony 3捆绑在一起。尽管几个月前它在symfony docs中被描述为“最佳实践”。