14

我想全局配置资产转储我的 JS 文件的输出目录。目前,他们总是去web/js/*。我想将其更改为web/js/compiled/*.

可以在每个文件级别指定它: http: //symfony.com/doc/2.0/cookbook/assetic/asset_management.html#dumping-asset-files

似乎找不到在我的 Symfony 应用程序中全局设置它的方法。我缺少任何配置参数吗?

更新

找到一个名为write_to. 设置它config.yml会导致命令行将assetic:dump文件转储到新目录,但在 twig 文件中asset_urlvar 仍然指向原始路径。

4

5 回答 5

17

您应该使用属性write_to

在我的配置中,例如我使用

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: %kernel.debug%
    read_from:      %kernel.root_dir%/Resources/views/
    write_to:       %kernel.root_dir%/../web/static/

您的输出字符串从write_to结束的地方开始

举个例子

{% javascripts filter="closure" output='js/main.js'

...

 {% stylesheets filter='compass,?cssrewrite' 
     'default/static/sass/screen.scss' 
     output='css/screen.css' 
 %} 

两者都将分别放在/web/static/js/main.js/web/static/css/screen.css

assets_base_urls用于指定要用于从 http 和 ssl (https) 页面引用的资产的基本 URL。

!! assets_base_urls也被{% images %}用作值之前的根output,但在渲染 html 时{% images %}不考虑(仅在转储时),因此最好不要使用并仅依赖值。有关它的更多信息,请参阅我在 stackoverflow上的另一篇文章和AsseticBundle 的 github 上的这篇文章write_towrite_tooutput

于 2012-05-02T19:24:01.483 回答
4

您可以将 twig 的资产路径 ( assets_base_urls) 设置为静态路径,而不是使用相对路径。在您的 config.yml 文件中,它看起来类似于:

framework:
   templating:
      engines: ['twig']
         assets_base_urls:
            http: [http://path.to-cdn.com]

这将asset_url受到资产以及树枝asset()方法的影响。后者可能需要也可能不需要。

于 2012-04-11T21:02:52.513 回答
2

这个 GitHub 问题评论帮助我解决了这个问题。在开发中,您的资产仍将通过控制器,但在生产中,URL 将如您所愿。

示例 config.yml:

assetic:
    write-to:  %kernel.root_dir%/../web/assets
    ...
framework:
    ...
    templating:
        engines: ['twig']
        packages:
            assetic:
                base_urls: '/assets'

模板中的示例:

{% block javascripts %}
    {% javascripts '@jquery' '@bootstrap_js' '@backbone' '@handlebars' combine=true package='assetic' %}
    <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

请注意,您必须在 java 脚本标签中添加 package='assetic' 属性。这是一个很好的折衷 IMO,因为它不会像 kmfk 的解决方案那样破坏其他捆绑包中的资产。

于 2013-09-05T15:19:42.720 回答
2

只是一个简短的说明。如果你使用assets_base_urls, 来指定一个相对的基本 URL,这仅适用于 Symfony 2.7 之前的版本,因为该版本中引入了新的资产组件。有关如何更改此设置的更多信息,请访问http://symfony.com/blog/new-in-symfony-2-7-the-new-asset-component,但总而言之:

framework:
    templating:
        assets_base_urls: 
            http: ['/some-relative-url']
            ssl: ['/some-relative-url']

变成:

framework:
    assets:
        base_path: /some-relative-url
于 2016-01-27T16:46:37.720 回答
-4

试试这个命令$ app/console --env=prod assetic:dump web/ ,你只需更改你想要的 url,而不是 'web/'

于 2013-07-29T13:29:28.730 回答