[解決済み] assetic:dumpとassets:installの違いについて
質問
Symfony2において、以下の違いは何ですか?
assetic:dump
と
assets:install
? これらのコマンドはそれぞれどのようなシナリオで、どのような順序で(順序が関係する場合)使用されるべきですか?
どのように解決するのですか?
私は実際に は最近このことについて書きました。 を Symfony 2 をベースとした OroCRM についての記事で書きました。 もしあなたが異なるコマンドのコンテキストや理由を知りたいのであれば、それが面白いかもしれません。
symfony アプリケーションにフロントエンドのファイル (javascript、css、画像など) を含めるために2つの異なるシステムがあります。 1つは
assets:install
コマンドが最初に登場しました。 このコマンドはアプリケーションのすべての symfony Bundle を検索して
Resources/public
フォルダーに格納されます。 見つかった場合は
assets:install
コマンドは
Resources/public
から
web/public/bundle/[bundle-name]
. これは、twig で作成されたリンクが
assets
関数で作成されたリンクが、これらのファイルを探す場所です。 これは
<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
でファイルへのリンクが可能です。
のいずれかの
を束ねることができます。(
@AcmeFooBundle
). Asseticでは、ワイルドカードを使用してフォルダ内の複数のファイルにリンクすることも可能です。
{% javascripts '@AcmeFooBundle/Resources/public/js/*' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
もう一つの違いは
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>
つまり、これらのファイルへのリクエストは、PHP のフロントコントローラ (
app_dev.php
) の中で設定された特別なルートを通じて実行されます。
assetic
バンドルに設定された特別なルートを経由しています。これはつまり、あなたが
dev
モードでは、アセットをダンプする必要はありません。 自動的に含まれるのです。 また、ファイルにフィルタを適用することもできます。 たとえば、次のようにすると
cssrewrite
フィルタを適用しています。
{% stylesheets 'bundles/acme_foo/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
フロントエンドアセットの出力をプログラム的に変更したいと思ったとき、 -
assetic
を使えば、カスタムtwigフィルタを書くことでそれが可能になります。
しかし、これはパフォーマンス重視です。 実稼働環境では、PHPフロントコントローラファイルを通して各ファイルを個別にリンクする代わりに、生成されたHTMLは次のようになります。
<script type="text/javascript" src="/js/as5s31l.js"></script>
どこが
as5s31l.js
はどこから来るのでしょうか? それが、この
assetic:dump
コマンドの仕業です。 それは
を結合します。
を結合し、静的でキャッシュ可能なファイルを作成します。
必要なこと
プロジェクトで特に指示されていない限り、常に
assets:install
と
assetic:dump
というのは、サードパーティのバンドルがこれらのコマンドを使用しているかどうかがわからないからです。 必要なのは
assetic:dump
にあるアプリケーションをデプロイするか表示する前に
prod
モードで表示します。 順序は関係ありません。
バンドルがどのシステムを使うべきかについてですが、もしあなたが上記の内容を読んで
assetic
が何をしてくれるのかわからない場合は
assets
. で大丈夫です。
関連
-
[解決済み] Composerで単一のライブラリを更新する方法は?
-
[解決済み】Doctrine QueryBuilder で行数を数える。
-
[解決済み】Symfony 2.xでは、本当にすべてをバンドルにすべきなのか?
-
[解決済み】Twigテンプレートで現在のURLを取得する?
-
[解決済み] Symfony2のTwigテンプレートで設定パラメータを取得する方法
-
[解決済み] symfony2のコントローラでparameters.ymlから読み込むにはどうしたらいいですか?
-
[解決済み] findAll Doctrine のメソッドを並べ替えるには?
-
[解決済み] Symfony 3 の新しいディレクトリ構造は何ですか?
-
[解決済み] Doctrine リスナー vs サブスクライバー
-
[解決済み] composerのインストールが300秒後にタイムアウトするのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Doctrine QueryBuilder で行数を数える。
-
[解決済み】Twigテンプレートで現在のURLを取得する?
-
[解決済み] Symfony2 の config.yml から設定を読み込むには?
-
[解決済み] composer.jsonのチルダ(~)は何を意味しているのですか?
-
[解決済み] Doctrine 2 は manyToOne リレーションで nullable=false を使うことはできないのですか?
-
[解決済み] Symfony 2: テンプレート内でユーザーがログインしていないことを確認するにはどうすればよいですか?
-
[解決済み] Symfony 3 の新しいディレクトリ構造は何ですか?
-
[解決済み] Symfony2のTwigテンプレートエンジンにオブジェクトが存在するかどうかを確認するにはどうしたらいいですか?
-
[解決済み] Doctrine リスナー vs サブスクライバー
-
[解決済み] composerのインストールが300秒後にタイムアウトするのはなぜですか?