更改 symfony 资产目录

Changing symfony assetic directory

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

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

问题是 Assetic 也会在从包中编译 css+js 文件后将它的文件转储到那里。但是这些文件是生成的,不应在 git 中结束,而遗留文件应由 git.

管理

随着时间的推移,遗留文件将完全消失,一切都将由 Assetic 处理,但现在我必须忍受两者并肩工作。

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

到目前为止,我发现了 2 个可能有用的东西:

1:使用assetic-bundle的write_to配置。但是,这似乎只影响 assetic:dump 命令,不应用于更改输出目录(根据评论)。这不会更改浏览器用于检索文件的 url。

2:在我的模板中为每个 %javascripts%%stylesheets% 标签使用 output 参数。虽然这似乎确实可以控制文件的去向,但我发现我需要在每个标签上都这样做是不合逻辑的。我应该能够在系统范围内配置这个。

如何调整我的 Symfony and/or Assetic 配置以更改用于生成 css+js 文件的目录和网络目录?

您可以使用 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 assetic 不包含在 Symfony 标准版中。您可以查看 gulp 等替代方案,以便更轻松地处理您的资产管理