Symfony2のでは、との違いは何であるassetic:dump
とはassets:install
?これらの各コマンドはどのシナリオでどのような順序で使用する必要がありますか(順序が関連している場合)?
回答:
私は最近、Symfony 2に基づくOroCRMに関する記事でこれについて実際に書いています。さまざまなコマンドのコンテキスト/理由が必要な場合は、興味深いと思うかもしれません。
Symfonyアプリケーションにフロントエンドファイル(javascript、css、imagesなど)を含めるための2つの異なるシステムがあります。assets:install
コマンドは、最初に来ました。このコマンドは、アプリケーション内のすべてのSymfonyバンドルで
Resources/public
フォルダ。見つかった場合、assets:install
コマンドはファイルをからResources/public
にコピーまたはシンボリックリンクしますweb/public/bundle/[bundle-name]
。これは、twigassets
関数で作成されたリンクがこれらのファイルを検索する場所です。この
<script src="{{ asset('js/script.js') }}" type="text/javascript"></script>
これになります
<script src="/bundles/[bundle-name]/js/script.js" type="text/javascript"></script>
それはすべてだassets
システムがありません。フロントエンドファイルをバンドルとともに保存できます。
assetic
システムが異なっています。を使用するとassetic
、このようなファイルにリンクできます。
{% javascripts '@AcmeFooBundle/Resources/public/js/foo.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
スタイルシートと画像にも同様のタグがあります。任意のバンドルassetic
内のファイルにリンクできることに注意してください。()。Asseticでは、ワイルドカードを使用してフォルダー内の複数のファイルにリンクすることもできます。@AcmeFooBundle
{% javascripts '@AcmeFooBundle/Resources/public/js/*' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
とのもう1つの違いassetic
は、生成されるリンクにあります。でdev
環境彼らはこのようなものを見てみましょう。
<script type="text/javascript" src="/app_dev.php/js/foo.js"></script>
<script type="text/javascript" src="/app_dev.php/js/bar.js"></script>
つまり、これらのファイルのリクエストapp_dev.php
は、assetic
バンドルに設定された特別なルートを介してPHPフロントコントローラー()を介して実行されます。つまり、dev
モードになっているときは、アセットをダンプする必要はありません。それらは自動的に含まれます。また、ファイルにフィルターを適用することもできます。たとえば、次の例では、cssrewrite
プルされたファイルにフィルターを適用します。
{% stylesheets 'bundles/acme_foo/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
フロントエンドアセットの出力をプログラムで変更したいassetic
場合は、カスタムの小枝フィルターを作成して変更 できます。
ただし、これはパフォーマンスを重視します。本番環境では、PHPフロントコントローラーファイルを介して各ファイルを個別にリンクする代わりに、生成されたHTMLは次のようになります。
<script type="text/javascript" src="/js/as5s31l.js"></script>
どこas5s31l.js
から来たの?それがassetic:dump
コマンドが行うことです。これは、組み合わせ(フィルタを適用した後に)すべての個々のjavascript / cssファイルを、生産のための素晴らしい、静的、キャッシュ可能なファイルを作成します。
プロジェクトで特に指示がない限り、これらのコマンドを使用しているサードパーティバンドルがわからないため、常にassets:install
andを実行する必要がありassetic:dump
ます。assetic:dump
アプリケーションをprod
モードでデプロイまたは表示する前に実行する必要があるだけです。順序は関係ありません。
バンドルで使用するシステムについては、上記を読んで何assetic
ができるかわからない場合は、を使用してくださいassets
。大丈夫です。
<script type="text/javascript" src="app_dev.php/js/as5s31l.js"></script>
たところ、あなたは 実際に意味しました <script type="text/javascript" src="app.php/js/as5s31l.js"></script>