2016-06-21 1 views
1

私はゆっくりとSymfonyに移行しているレガシーアプリケーションを開発中です。 現在Symfony2.6(PHP版のため)、まもなくSymfony3.1。symfony asseticディレクトリを変更する

レガシーアプリケーションでは、すでにメインルートにある/css/,/js/というディレクトリを使用して、css + jsを管理しています。

問題はAsseticもバンドルからのCSS + jsファイルをコンパイルした後にAsseticがそのファイルをそこにダンプすることです。しかし、それらのファイルは生成され、gitで終わるべきではありませんが、従来のファイルはgitで管理する必要があります。

レガシーファイルは完全に消えてしまいますが、すべてがAsseticによって処理されますが、現時点では、両方のサイドバイサイドで動作する必要があります。

Asseticを再設定して、css + jsファイルを生成するときに別のディレクトリを使用したいとします。それに応じてウェブページで使用されるURLも調整する必要があります。 追加接頭辞ディレクトリを追加することが好ましい。

1:assetic-バンドルのwrite_to構成を使用

は、これまでのところ私は働くかもしれない2つのことを発見しました。しかし、これはassetic:dumpコマンドにのみ影響するように見え、(コメントに従って)出力ディレクトリを変更するために使用すべきではありません。これは、ブラウザでファイルを取得するために使用されるURLを変更しません。

2:テンプレート内の%javascripts%および%stylesheets%タグごとにoutputパラメータを使用します。これはファイルがどこに行くのかを制御するように見えますが、私はすべてのタグでこれを行う必要があります。私はこのシステム全体を構成することができるはずです。

生成されたcss + jsファイルに使用されるディレクトリとWeb-dirを変更するには、SymfonyやAsseticの設定を調整するにはどうすればよいですか?

答えて

2

あなたは、出力ディレクトリのためwrite toを使用し、2.7 more info here

以来、新たな資産のコンポーネントがある

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

framework: 
    assets: 
    base_path: "foo" 

フレームワークの設定の下で、あなたの資産にベースパスを定義すると、あなたは

を呼び出すことができますすることができます
{% javascripts '@AcmeBundle/Resources/public/js/bar.js' output="js/bar.js" %} 
    <script src="{{ asset_url }}" defer></script> 
{% endjavascripts %} 

ps:symfony 2.8 asseticはSymfony Standard Editionに含まれていないため、 gulpのような代替資産があるかどうかチェックすることができます。

+0

'write_to'はsymfony2.6で動作しますが、' framework.assets.base_path'はそのバージョンには存在しません。私は 'framework.templating.assets_base_urls。[ssl | http]'(2つのキー)を試しましたが、私はそれらがcss/jsではなくアセットだけに使われていると思います。 – DoppyNL

+0

'output'パラメータを追加すると、' write_to'で指定されたディレクトリにファイルが置かれますが、これは要求されたファイル名にのみ影響し、style-tagで渡されたURLはまだ間違っています( ' base_path'は適用されません) – DoppyNL

+0

更新されたアプリケーションは、twigの* all * javascriptとstylesheet呼び出しで 'output'パラメータを使用するように更新されました。 Symfony2.8またはSymfony3.1にアップグレードした後、これを改訂して、より強固で永続的な解決策を使用します。 – DoppyNL

関連する問題