Magento Composerを介したアプリケーション展開によるMagentoモジュール開発

はじめに



この記事では、Magento Composerを使用してMagentoアプリケーションの開発バージョンを展開した経験について説明します。 当社の典型的なMagentoアプリケーションの構造:





Magentoアプリケーションの開発バージョンでは、モジュールのコードを開発し、対応するリポジトリに変更をアップロードして、共通モジュールのコードをプロジェクト間で移行できるようにする必要があります。



Magentoアプリケーションの展開のための新しいプロジェクトの開始に関連して、 Magento Composerを試してみることにしました。 現時点では、SVNリポジトリに格納されている各プロジェクトのコードに加えて、個別のプロジェクトに開発したすべてのモジュール(一般および特殊)があります。





Magento Composerを使用するために、プロジェクトは次の部分に分割されました(それぞれが独自のgitリポジトリにあります)。











環境の準備



実験の過程で、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モジュールのリポジトリに閉じます:

  { "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" }
      
      







追加セクション






プロジェクトの展開



 $ 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ファイルがあります





モジュール開発の機能



すべてのモジュールファイルは、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リポジトリの使用



All Articles