更改symfony资产目录

时间:2016-06-21 08:32:54

标签: symfony assetic

我正在处理我们正在慢慢迁移到Symfony的遗留应用程序。 目前Symfony2.6(由于PHP版本),但很快Symfony3.1。

旧版应用程序已使用主根目录中的/css//js/来管理css + js。

问题是,在从bundle编译css + js文件后,Assetic还会将其转储到那里。但是这些文件是生成的,不应该以git结尾,而遗留文件应该由git管理。

遗留文件会及时完全消失,所有内容都将由Assetic处理,但是现在我必须和两个人并肩工作。

我想在生成css + js文件时重新配置Assetic以使用不同的目录。它还应该相应地调整网页上使用的URL。 最好通过添加额外的前缀目录。

到目前为止,我发现了两件可行的方法:

1:使用资产包的write_to配置。但是,这似乎只影响assetic:dump命令,不应该用于更改输出目录(根据注释)。这不会更改浏览器用于检索文件的URL。

2:对我的模板中的每个output%javascripts%标记使用%stylesheets%参数。虽然这似乎可以控制文件的位置,但我觉得我需要在每个标签上执行此操作都是不合逻辑的。我应该能够在整个系统范围内进行配置。

如何调整Symfony和/或Assetic配置以更改用于生成的css + js文件的目录和web-dir?

1 个答案:

答案 0 :(得分:2)

您可以使用write to作为输出目录,并在框架配置下在资产中定义基本路径

assetic:
 write_to: "%kernel.root_dir%/../web/foo"

framework:
   assets:
     base_path: "foo"

自2.7 more info here

以来,有一个新的资产组件

你可以致电

{% javascripts '@AcmeBundle/Resources/public/js/bar.js' output="js/bar.js" %}
    <script src="{{ asset_url }}" defer></script>
{% endjavascripts %}

ps:因为symfony 2.8资产不包含在Symfony标准版中。您可以检查gulp之类的替代方案,以便更轻松地处理资产管理