はじめに
この記事では、Magento Composerを使用してMagentoアプリケーションの開発バージョンを展開した経験について説明します。 当社の典型的なMagentoアプリケーションの構造:
- マジェント
- プロジェクトで使用されるサードパーティモジュール
- 複数のプロジェクトで使用されている、当社が開発したモジュール
- このプロジェクト専用の機能を含む開発中のモジュール
- 特定のプロジェクトのテーマ
Magentoアプリケーションの開発バージョンでは、モジュールのコードを開発し、対応するリポジトリに変更をアップロードして、共通モジュールのコードをプロジェクト間で移行できるようにする必要があります。
Magentoアプリケーションの展開のための新しいプロジェクトの開始に関連して、 Magento Composerを試してみることにしました。 現時点では、SVNリポジトリに格納されている各プロジェクトのコードに加えて、個別のプロジェクトに開発したすべてのモジュール(一般および特殊)があります。
- プロジェクト01用のMagentoのインストールおよびサードパーティモジュール。
- プロジェクト02用のMagentoインストールおよびサードパーティモジュール。
- ...
- 私たちのモジュール;
Magento Composerを使用するために、プロジェクトは次の部分に分割されました(それぞれが独自のgitリポジトリにあります)。
- z_mage_composer_prj_01_full :プロジェクト全体、テーマ、Magento Composerからは利用できないサードパーティモジュール用の展開スクリプト。
- z_mage_composer_mod_01 :プロジェクトが依存する最初のモジュール。
- z_mage_composer_mod_02 :プロジェクトが依存する2番目のモジュール。
環境の準備
実験の過程で、Windowsはアプリケーションの開発バージョンの展開に適さないことが判明しました。 Magento Composerは、 コピー (モジュールファイルをMagentoアプリケーションの構造にコピーする)とシンボリックリンク (Magentoアプリケーションの構造にモジュールファイルへのシンボリックリンクを作成する)の2つの展開戦略を提供します。 開発バージョンでは、シンボリックリンクのみを使用できます。 モジュールのソースコードをベンダーディレクトリ(Composerが使用するモジュールのファイルを配置する場所)のフォルダーにコンパクトに保持する必要があります。 Windowsのシンボリックリンクは十分に機能しません。元のファイルに加えられた変更は、PhpStorm IDEとWebサーバーの両方で長い遅延のリンクに反映されます。 プラス(またはマイナス)-テンプレートとレイアウトの説明( app / design / frontend / [default] / [default]ディレクトリ)を見つけるためにMagentoが使用するアプローチはWindowsでは動作しません(Mage_Core_Model_Design_Package :: validateFileおよびMage_Core_Block_Template ::を変更する必要があります) fetchView)、しかし、これはMagentoレベルよりもPHPレベルでの問題である可能性が高いです。 一般に、Windowsの開発バージョンを展開するための長い試行の後、それは最も便利な開発オプションではない(可能ですが)と認識されたため、Linuxはさらなる継続のために残りました(Ubuntu 14.04)。
Composer自体のインストールに問題はありませんでした。
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
他のすべて(Magento Composerのインストールを含む)は、composer.jsonでプロジェクトを設定することで実行されます。
composer.json
このコンテキストで重要な設定のみを提供します( composer.jsonのフルバージョン):
{ ... "type": "magento-module", ... "require": { "magento-hackathon/magento-composer-installer": "*", "magento-hackathon/composer-command-integrator": "*@dev", "composer/composer": "*@alpha", "magento/core": "1.9.1.0", "magento-hackathon/hackathon_magemonitoring": "*", "connect20/nmmlm_log": "*", "praxigento/z_mage_composer_mod_01": "*@dev", "praxigento/z_mage_composer_mod_02": "*@dev" }, "repositories": [ { "type": "composer", "url": "http://packages.firegento.com" }, { "type": "vcs", "url": "https://github.com/praxigento/z_mage_composer_mod_01" }, { "type": "vcs", "url": "https://github.com/praxigento/z_mage_composer_mod_02" } ], "extra": { "magento-root-dir": "mage", "magento-deploystrategy": "symlink", "auto-append-gitignore": true } }
セクションが必要
- magento-hackathon / magento-composer-installer :直接Magento Composer自体。
- magento-hackathon / composer-command-integrator :開発中にMagentoモジュールを増分更新するためのモジュール(モジュールにファイルを追加するときに新しいファイルへのシンボリックリンクを作成するため);
- composer / composer :composer-command-integratorが機能するには、正確な分類子「アルファ」が必要です。
- magento / core :実際のMagentoコード。
- magento-hackathon / hackathon_magemonitoring :(たとえば)Magento Composerリポジトリからロードされたサードパーティのモジュール。
- connect20 / nmmlm_log :Magento Connectを介して自由に配布されるモジュール(Magento Connect ストレージから Magento Composer ストレージにダウンロード)
- praxigento / z_mage_composer_mod_01 :コードがgithubリポジトリにある独自のモジュールの1つ。
- praxigento / z_mage_composer_mod_02 :2番目の独自のモジュール。そのコードはgithubリポジトリにもあります。
リポジトリセクション
コンポーザーをMagentoモジュールのリポジトリに閉じます:
{ "type": "composer", "url": "http://packages.firegento.com" }
...そして、プロジェクトで独自のモジュールが使用されているリポジトリのアドレスを示します。
{ "type": "vcs", "url": "https://github.com/praxigento/z_mage_composer_mod_01" }, { "type": "vcs", "url": "https://github.com/praxigento/z_mage_composer_mod_02" }
追加セクション
- magento-root-dir :Magento( mage )を展開するディレクトリを設定します。
- magento-deploystrategy :展開戦略の設定-開発バージョンのシンボリックリンク。
- auto-append-gitignore :バージョン管理のために、Magentoアプリケーション( mageディレクトリ)にリンクされるMagentoモジュールのファイルをmage / .gitignoreファイルに追加する必要があることを示します 。
プロジェクトの展開
$ git clone git@github.com:praxigento/z_mage_composer_prj_01_full.git full $ cd full $ composer install
コンソールメッセージ
Loading composer repositories with package information Installing dependencies (including require-dev) - Installing justinrainbow/json-schema (dev-master 87b54b4) Cloning 87b54b460febed69726c781ab67462084e97a105 - Installing icecave/isolator (2.3.0) Loading from cache - Installing eloquent/pops (3.1.1) Loading from cache - Installing eloquent/liberator (1.1.1) Loading from cache - Installing eloquent/enumeration (5.1.0) Loading from cache - Installing eloquent/composer-config-reader (2.0.0) Loading from cache - Installing magento-hackathon/magento-composer-installer (dev-master 38e6c01) Cloning 38e6c01e6252fa408fbe63ef0b5b632b154f421b - Installing symfony/console (2.7.x-dev b2d63b9) Cloning b2d63b962688615d9b895a3d0be8bca7c3acf2fd - Installing praxigento/z_mage_composer_mod_01 (dev-master 73ac1b0) Cloning 73ac1b00c04eeb7037a5fb4bcea2502d06c588a0 - Installing praxigento/z_mage_composer_mod_02 (dev-master ae7f96c) Cloning ae7f96cb757a971e95d23f4ce6141bb441315075 - Installing seld/jsonlint (1.3.0) Downloading: 100% - Installing symfony/process (2.7.x-dev 3131373) Cloning 3131373c59f463709b04e39ae0818a2b84d01d38 - Installing symfony/finder (2.7.x-dev 3163e33) Cloning 3163e335375f3433569996fd68c89887e4a82d29 - Installing composer/composer (dev-master 095dc61) Cloning 095dc6129550de93cd98170c8e6c6ccd4558e983 - Installing magento-hackathon/composer-command-integrator (dev-master 826aa5a) Cloning 826aa5a2a68d10d991b457c397b98773793f0f4c - Installing magento/core (1.9.1.0) Loading from cache - Installing magento-hackathon/hackathon_magemonitoring (dev-master 393fd28) Cloning 393fd2851597ed7e1a9ab87dae7f05feab455e3b - Installing connect20/nmmlm_log (0.3.0) Downloading: 100% icecave/isolator suggests installing eloquent/asplode (Drop-in exception-based error handling.) magento-hackathon/magento-composer-installer suggests installing colinmollenhour/modman (*) magento-hackathon/magento-composer-installer suggests installing theseer/autoload (~1.14) magento-hackathon/magento-composer-installer suggests installing zetacomponents/console-tools (dev-master) symfony/console suggests installing symfony/event-dispatcher () symfony/console suggests installing psr/log (For using the console logger) Writing lock file Generating autoload files
プロジェクトの展開の結果、モジュールのソースコードはベンダーディレクトリに分類されます(ローカルWindowsステーションからのスクリーンショット)
... Mage Magentoディレクトリへのリンク:
... Magento Composerを介してインストールされないテーマとモジュールは、 mageディレクトリに直接注がれます。
さまざまなソースコードリポジトリのマウントポイント:
プロジェクトには2つの.gitignoreファイルがあります 。
- .gitignore :開発者が手動で入力します。
- mage / .gitignore :Magento自体とモジュールを展開するときに、Magento Composerによって自動的に入力されます。
モジュール開発の機能
すべてのモジュールファイルは、modmanのレジストリのマッピングに登録する必要があります 。
path/to/file/in/module path/to/file/in/magento
次のコマンドで modmanファイルを作成できます。
for i in `find . -type f | grep -v \.git | grep -v "^.$" | grep -v "modman" | sed 's/\.\///'`; do echo ${i} ${i}; done > modman
モジュールに新しいファイルを追加した後、コマンドインテグレーターを実行して、新しいファイルがMagentoルートディレクトリにリンクされるようにする必要があります。
$ ./vendor/bin/composerCommandIntegrator.php magento-module-deploy
モジュールをバージョン管理システムでの作業に適した形式でデプロイするには、モジュールのcomposer.jsonファイルで指定する必要があります。
{ "name": "praxigento/z_mage_composer_mod_01", ... "config": { "preferred-install": "source" } }
IDE(PhpStorm)で参照によってファイルを編集する場合、「見かけ」( mage / app / code / community / Vendor / Ext / Model / Observer.php )と「available」(vendor / company / module / app / code /コミュニティ/ベンダー/ Ext /モデル/ Observer.php)-「既存の」バージョンの編集は遅かれ早かれ「見かけの」に反映されます(この場合、PhpStormの更新機能は提供されません-「見かけの」バージョンに文字を追加し、Ctrl + Sを押す必要があります「ファイルシステムの変更の読み込み」を介して更新を行います)。 デバッグ用のブレークポイントは両方のバージョンのファイルで設定できますが、ステップバイステップトレースは「既存の」トレースに従ってのみ実行されます(停止がゼロから見られる場合があります-「見かけの」バージョンでは対応する行にブレークポイントがあります)。
オプショナル
「 PhpStormでのさまざまなVCSリポジトリの使用 」