どのような場合にこのコマンドを実行する必要がありmagento setup:di:compile
ますか?
pub/static
どのような場合にこのコマンドを実行する必要がありmagento setup:di:compile
ますか?
pub/static
回答:
展開中(つまり、運用モードでシステムに変更が加えられたとき)
実稼働モード(バージョン2.0.5以前)では、「マルチテナント」コンパイルを使用する必要があることに注意してください。2.0.6以降で修正されました。
bin/magento setup:di:compile-multi-tenant
参照:http : //devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
開発モードでコンパイルを使用してサイトを高速化することもできますが、一方で、依存関係(コンストラクターパラメーター)を持つ新しいクラスを追加したり、既存のクラスの依存関係を変更したりbin/magento setup:di:compile
するたびに実行する必要があるため、開発が遅くなります。
これはオプションであり、おそらく良い考えではありません。開発環境で既にコンパイルを実行している場合は、ファイルを削除しvar/di
て無効にします。
var/generation
か?
Action
がテストするために作成しました。-ページをロードしました、エラー。-削除されdi
、generation
フォルダーが再ロードされ、機能する。-新しい依存関係の追加、ページの再読み込み、エラー。ただし、di
フォルダーは生成されません。- generation
もう一度削除、リロード、動作します。結論:依存関係を追加した後に生成フォルダーを削除すると、を実行する必要がなくなりsetup:di:compile
ます。他の誰かがこれを確認できれば、それは素晴らしいことです。
別の答えに関する私のコメントに従って:
ページをリロードする前にとフォルダをsetup:di:compile
削除するだけで、依存関係を追加するたびにコマンドを実行することを回避できます。var/di
var/generation
私自身のテストから、Magentoはvar/generation
フォルダーを再作成しますが、再度実行するvar/di
までフォルダーは再作成しませんsetup:di:compile
。つまりvar/generation
、削除するフォルダーのみが必要です。
Funnily十分な、これもと連携pub/static/*
してsetup:static-content:deploy
。これは、静的コンテンツがCLIではなくページのリロードによって構築される場合、Magentoが必要なファイルへのシンボリックリンクを作成するためです。
私たちのオフィスの人々は、Docker for Macの使用中に上記のコマンドを実行する際に問題を抱えていました。ファイルの処理が遅すぎました。上記の手順を使用することにより、開発がより迅速になります。
これは、実稼働モードまたはデフォルトモードでは機能しないことに注意してください。これは開発専用です。Fabian Schmenglerが述べたように、最初のページの再読み込みは通常より遅くなりますが、実行setup:static-content:deploy
や `setup:di:compile ほど遅くはなりません。
参考のために、バージョン2.1.5を実行しています。
Alan Stormのブログから引用。
依存性注入のコンパイル
まず、これらのコマンドが解決しようとしている問題を説明する必要があります。Magento 2システムを実稼働環境に出荷するときは、次のコマンドを実行する必要があります
php bin/magento setup:di:compile
このコマンドは、システム内のコードをスキャンし、開発者モードで実行しているときにMagentoが動的にロードする(主にオブジェクトマネージャーシステムと依存関係の注入に関連する)多くの事柄を事前に生成します。これはパフォーマンスとセキュリティの両方の問題であり、完全に説明することはこの記事の範囲外です。