magento 2-どのような場合、このコマンドmagento setup:di:compileを実行する必要がありますか?


12

どのような場合にこのコマンドを実行する必要がありmagento setup:di:compileますか?


あなたは、新しいモジュールをインストールし、いくつかのdirectriesクリアしたいたら
Jaleel

そして他に何か?
MrTo-Kane

また、プロダクションモードに切り替えると、そのモードでは静的コンテンツが生成されません。それはすべてから提供されていますpub/static
スティーブジョンソン

回答:


8
  • 展開中(つまり、運用モードでシステムに変更が加えられたとき)

    実稼働モード(バージョン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て無効にします。


1
setup:di:compile-multi-
tenantは

var / diフォルダートリックの削除が機能するかどうかについて確認をお願いできますか?それは私のためにいないようだ
Wildcard27

@ Wildcard27のディレクトリも削除するとどうなりますvar/generationか?
ファビアンシュメングラー

@FabianSchmengler Actionがテストするために作成しました。-ページをロードしました、エラー。-削除されdigenerationフォルダーが再ロードされ、機能する。-新しい依存関係の追加、ページの再読み込み、エラー。ただし、diフォルダーは生成されません。- generationもう一度削除、リロード、動作します。結論:依存関係を追加した後に生成フォルダーを削除すると、を実行する必要がなくなりsetup:di:compileます。他の誰かがこれを確認できれば、それは素晴らしいことです。
ワイルドカード

1

別の答えに関する私のコメントに従って:

ページをリロードする前にとフォルダをsetup:di:compile削除するだけで、依存関係を追加するたびにコマンドを実行することを回避できますvar/divar/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を実行しています


0

Alan Stormのブログから引用。

依存性注入のコンパイル

まず、これらのコマンドが解決しようとしている問題を説明する必要があります。Magento 2システムを実稼働環境に出荷するときは、次のコマンドを実行する必要があります

php bin/magento setup:di:compile

このコマンドは、システム内のコードをスキャンし、開発者モードで実行しているときにMagentoが動的にロードする(主にオブジェクトマネージャーシステムと依存関係の注入に関連する)多くの事柄を事前に生成します。これはパフォーマンスとセキュリティの両方の問題であり、完全に説明することはこの記事の範囲外です。


1
「これはパフォーマンスとセキュリティの両方の問題であり、完全に議論することはこの記事の範囲外です。」これはそれを与えました。アランストームからの露骨なコピー:alanstorm.com/magento_2_di_compile_pre-scan_with_commerce_bug
ファビアンシュメングラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.