開発者モードではどのコンパイルコマンドが必要ですか?


24

Magento 2開発者モードでどのコンパイルコマンドを実行するかを誰かが指示できますか?私はまだそれを正しく理解しているかどうかわかりません。

devdocsでは、開発者モードは次のように説明されています。

  • 静的ビューファイルはキャッシュされません。呼び出されるたびに、Magento pub / staticディレクトリに書き込まれます

つまり、pub / static内の個々のファイルは要求時に生成され、呼び出す必要はありませんsetup:static-content:deployか?これは私の経験と矛盾しています。または、ファイルを削除して再生成できますか?また、画像、CSS、およびJSファイルの扱いが異なるようです。

開発者モードのドキュメントページには、コードのコンパイルについては何も書かれていませんが、違いもあったと思うのでsetup:di:compiledi.xmlファイルをすべて変更した後に実行する必要はありませんでした。これは正しいですか?その場合、開発者モードでコード生成はどのように機能しますか?

言い換えれば、キャッシュは別として、どのコマンドを変更した後に実行する必要がありますか?

回答:


27

注意してください:開発者モードで削除するpub/static.htaccess、そのフォルダーの魔法を作るファイルを取り除くため、メカニズムが壊れることがあります。

pub/static/.htaccessファイルを開発者モードで保持する場合、コンパイルコマンドを実行する必要はありません。Magentoは、要求されるとすぐにファイルへのシンボリックリンクを作成します。キャッシュが無効になっている場合、静的アセットへの変更はすぐに表示されます。

pub/static/frontendまたはpub/static/adminhtml代わりに削除できます。

ではデフォルトモード資産がされているマテリアpub/static最初の要請で(コピーされ、シンボリックリンクではない)が作成されている意味、サブフォルダ。それらを変更する場合は、キャッシュをフラッシュして更新する必要があります。

生産モード資産は、あなたが実行するまで(要求に応じて404 HTTPエラーを引き起こす)マテリアライズされていないbin/magento setup:static-content:deployコマンドを。

それが役に立てば幸い。


DIコンパイルはどうですか?
エルファン16

@Erfanもっと正確に言うと?
アレッサンドロロンキ

2
この質問では、DIコンパイルに対するデプロイモードの効果についても質問しています。簡単なテストを行っただけで、開発者モードの場合は、変更di.xmlを表示するためにDIをコンパイルする必要はありません(コード生成はページヒットごとにオンザフライで行われますか?)それはあなたの既に良い答えへの良い追加だと思った!
エルファン16

あなたは正しいです@Erfan
アレッサンドロロンキ

1+兄に感謝。魅力のように働いた。開発者モードでも、lessからcssへの変更を取得するために、デプロイコマンドを繰り返し実行するのは非常に悪い経験でした。別のプロジェクトから.htaccessをコピーし、記載されている場所に貼り付けました。Khalaaas!
ウマルYousaf

4

私の経験から、開発者モードでコード/静的ファイルを生成するためのコマンドを実行する必要はありません。

静的ファイルが生成されなかった場合、別の問題がある可能性があります。

その理由は一目でわかります。

  • 開発者モードが正しく機能していません。アクティベーションが何らかの理由で失敗した可能性があります
  • pub / static.phpの静的ファイルの書き換えが機能していません

1
pub / staticの私のlessファイルは再生成されません。この問題は発生しますか?自動再生する方法
mrtuvn

静的ファイルへのリクエストは最初にpub / static.phpに書き換えられ、次にpub / staticの下に(開発者モードで)存在しない場合はファイルを生成するため、開発者モードがアクティブであり、かつ書き換えも機能していることが重要です
デビッドVerholen

4

つまり、pub / static内の個々のファイルは要求時に生成され、呼び出す必要はありませんsetup:static-content:deployか?これは私の経験と矛盾しています。または、ファイルを削除して再生成できますか?

はい。しかし、私の経験によると、これはほとんどの場合うまくいきません。バグかもしれません。より良い解決策は、pub/static既に開発者モードをアクティブにしている場合でも、静的ファイル(js、css、htmlなど)を変更するたびにコンテンツを削除し、静的コンテンツを再度デプロイすることです。 これについての私自身の質問。


それはあなたの見方によって異なります。変更を加えるたびにsetup:static-content:deployを実行したい場合、プロジェクトを完了するのに何年もかかります。基本的に、1つのファイルのみを更新しているときに、ストアのすべてのファイルを作成するからです。そのため、私の解決策は、pub / static内のファイルを上書きし、キャッシュをクリアして変更を確認することでした。結果に満足したら、テーマファイルまたはカスタムモジュールファイルに移動してメインファイルを上書きし、setup:static-content:deployを実行して静的ファイルを更新します。
ヴォルフガングレオン

4

3つの異なるモードを明確にするため(ソース:Magento U基礎コース)。太字で、質問に関連する特定のポイント。

開発者モード

  • 静的ファイルの具体化は有効になっていません。
  • ブラウザーに表示される未捕捉の例外
  • ログに記録されないエラーハンドラでスローされた例外
  • システムログインvar/report、非常に詳細。

カスタマイズまたは拡張機能を開発している間は、開発者モードを使用する必要があります。このモードの主な利点は、エラーメッセージが表示されることです。パフォーマンスへの影響のため、実稼働環境では使用しないでください。開発者モードでは、静的ビューファイルは要求されるたびに生成されます。それらはpub/staticディレクトリに書き込まれますが、このキャッシュは使用されません。これはパフォーマンスに大きな影響がありますが、ファイルを表示するために開発者が行った変更はすぐに表示されます。

キャッチされなかった例外は、ログに記録されるのではなく、ブラウザに表示されます。イベントサブスクライバーを呼び出せない場合は常に例外がスローされます。

var/reportこのモードでは、システムのログインが非常に詳細になります。

生産モード

  • 実稼働システムでの展開フェーズ。最高のパフォーマンス
  • 例外はユーザーには表示されず、ログにのみ書き込まれます。
  • このモードは、静的ファイルの実体化を無効にします。
  • Magentoのdocrootは、読み取り専用のアクセス許可を持つことができます。

運用サーバーに展開したら、Magentoを運用モードで実行する必要があります。

プロダクションモードは、Magento 2で最高のパフォーマンスを提供します。

このモードの最も重要な側面は、エラーがファイルシステムに記録され、ユーザーには表示されないことです。このモードでは、静的なビューファイルは要求時にすぐに作成されません。代わりに、pub/staticコマンドラインツールを使用してディレクトリに展開する必要があります。生成されたページには、デプロイされたページリソースへの直接リンクが含まれます。

ファイルの表示を変更するには、展開ツールを再度実行する必要があります。

ビューファイルはCLIツールを使用して展開されるため、Webユーザーは書き込みアクセス権を持っている必要があります。Magento pub/staticディレクトリには読み取り専用のアクセス許可を設定できます。これは、一般にアクセス可能なサーバーでのより安全なセットアップです。

デフォルトモード

  • 他のモードが指定されていない場合に使用
  • ユーザーから例外を非表示にして、ログファイルに書き込みます
  • 静的ファイルの具体化が有効になっています。
  • 推奨されません/本番用に最適化されていません:キャッシュはパフォーマンスに悪影響を及ぼします。

名前が示すように、デフォルトモードは、他のモードが指定されていない場合のMagentoソフトウェアの動作方法です。

このモードでは、エラーはファイルに記録var/reportsされ、ユーザーには表示されません。静的ビューファイルはその場で実体化され、キャッシュされます。

開発者モードとは異なり、生成された静的ビューファイルがクリアされるまで、ビューファイルの変更は表示されません。

デフォルトモードは、主に静的ファイルを事前に生成およびデプロイするのではなく、その場で具体化されることによるパフォーマンスへの悪影響のために、実稼働環境に最適化されていません。

つまり、静的ファイルをその場作成してキャッシュすると、静的ファイル作成コマンドラインツールを使用して生成するよりもパフォーマンスに大きな影響があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.