ここが変わったMagento2〜静的ファイルの配置
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
Magento2 では静的ファイル(CSS, JavaScript, 画像, フォント等)の配置場所が改められました。
それに伴い、Magento1.x の時とはWebサーバーの設定だけでなく、運用時の注意点も増えています。
このエントリでは、静的ファイルの配置がどのように改められ、かつ環境構築時と運用時にどのように気をつけるべきかについて解説します。
静的ファイルは全て pub ディレクトリに集約
Magento2 では、静的ファイルは全て pub ディレクトリ以下に集約されることになりました。
- pub/media
- pub/static
という2つのディレクトリが主に静的ファイルを格納し、配信する役割を担っています。
Magento1.x では
- skin
- js
- media
だったものが1つのディレクトリ配下に集約されたと考えてもらえればよいでしょう。
pub/media と pub/static の役割
さて、2つの新設されたディレクトリは、明確に役割が異なります。
pub/media
pub/media には
- 商品画像
- カテゴリの見出し画像
- WYSIWYGエディタを介してアップロードされた画像
- ダウンロード商品のファイル
などが格納されます。Magento1.x のmedia ディレクトリと同じ役割と思ってもらえればよいでしょう。
pub/static
pub/static にはテーマを構成する以下のファイルが格納されます。
- CSS
- JavaScript
- 画像
- フォント
- JavaScript のテンプレート
Magento2 で新しく導入された要素としては、JavaScript のテンプレートでしょう。
これは Knockout.js というライブラリを Magento2 が利用しているために必要になったものです。
動作モードとデプロイの必要性
Magento2 には下記の表の通り、動作モードがあります。
default | developer | production | |
---|---|---|---|
エラー出力 | なし | あり | なし |
コード自動生成 | あり | あり | なし |
クラスの定義 | リフレクションベース | リフレクションベース | 事前コンパイル |
静的ファイルの配信 | あり | あり | 事前配信 |
ページキャッシュデバッグ情報 | なし | あり | なし |
設定ファイルの検証 | なし | あり | なし |
テーマの自動登録 | あり | あり | なし |
developer モードで Magento2 を動かしている間は問題ないのですが、production モードで動かす場合は注意が必要です。
pub/static 以下に配置されるコンテンツは、magento コマンドで setup:static-content:deploy をしないと更新されません。
もともと production モードの場合は他の定義データも動的に更新されないようになっているので、運用時の手順をどうするかよく検討しておく必要があるでしょう。
developer モードで pub/static のファイルが更新されない場合は
開発をしている最中に、時折静的ファイルの更新をしたにもかかわらず、反映が行われない場合があります。
このようなときは、Magentoの管理画面から、「静的ファイルのキャッシュ」をクリアすると良いでしょう。
- お知らせ (34)
- Magento Open Source (169)
- Adobe Commerce (86)
- Magentoトピックス (349)
- Magentoバージョンアップ (11)
- OroCommerce (1)
- AkeneoPIM (16)
- Shopware (26)
- 世界のプライバシー保護規制 (11)
- OroCRM (14)
- Typo3 (9)
- イベント (27)
- Mage-OS (1)
- エクステンションリリース情報 (75)
- Mautic (1)