- PVSM.RU - https://www.pvsm.ru -
В статье описан опыт развертывания девелоперской версии Magento-приложения с использованием Magento Composer'а. Структура типового Magento-приложения в нашей компании:
Девелоперская версия Magento-приложения должна позволять разрабатывать код наших модулей и заливать изменения в соответствующие репозитории, позволяя коду общих модулей мигрировать между проектами.
В связи с началом нового проекта для развертывания Magento [1]-приложений решили попробовать Magento Composer [2]. На данный момент у нас код каждого проекта хранится в своем SVN-репозитории, плюс в отдельном — все разрабатываемые нами модули (как общие, так и специализированные):
Для использования Magento Composer'а проект разделили на следующие части (каждая в своем git-репозитории):
В процессе экспериментов выяснилось, что Windows плохо подходит для развертывания девелоперской версии приложения. Magento Composer предлагает две стратегии развертывания: copy (копирование файлов модулей в структуру Magento-приложения) и symlink (создание в структуре Magento-приложения символических ссылок на файлы модулей). Девелоперская версия может использовать только символические ссылки, т.к. нужно держать исходники модулей компактно в своих папках в каталоге vendor (место, в котором Composer размещает файлы используемых модулей). Символические ссылки в Windows отрабатывают недостаточно качественно — изменения, внесенные в оригинальный файл отражаются по ссылке с большой задержкой (как в IDE PhpStorm, так и на самом web-сервере). Плюс (вернее, минус) — используемый в Magento подход по нахождению шаблонов и описания layout'ов (каталог app/design/frontend/[default]/[default]) не работает в Windows (нужно модифицировать Mage_Core_Model_Design_Package::validateFile и Mage_Core_Block_Template::fetchView), но это уже скорее проблема на уровне PHP, чем на уровне Magento. Вообщем, после долгих попыток развернуть девелоперскую версию Windows была признана не самым удобным вариантом для разработки (хотя и возможным), поэтому для дальнейшего продолжения остался Linux (Ubuntu 14.04).
С установкой [6] самого Composer'а проблем не возникло:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Все остальное (в том числе и установка Magento Composer'а) делается через настройку проекта в composer.json.
Привожу только значимые в данном контексте настройки (полный вариант composer.json [7]):
{
...
"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
}
}
Замыкаем composer на репозиторий 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
В результате развертывания проекта исходные коды наших модулей попадают в каталог vendor (скрины взяты с локальной станции на Windows)
… линкуются в Magento-каталог mage:
… тема и модули, которые устанавливаются не через Magento Composer, заливаются прямо в каталог mage:
Точки монтирования различных репозиториев с исходными кодами:
В проекте два файла .gitignore:
Все файлы модуля дожны быть прописаны в реестре mapping'а modman [10]:
path/to/file/in/module path/to/file/in/magento
После добавления нового файла в модуль нужно запустить command integrator, чтобы новые файы залинковались в корневой каталог Magento:
$ ./vendor/bin/composerCommandIntegrator.php magento-module-deploy
Чтобы модуль разворачивался в виде, пригодном для работы с системой контроля версий, в composer.json файле модуля нужно указать:
{
"name": "praxigento/z_mage_composer_mod_01",
...
"config": {
"preferred-install": "source"
}
}
"Использование различных VCS репозиториев в PhpStorm [11]"
Автор: flancer
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/78537
Ссылки в тексте:
[1] Magento: http://magento.com/
[2] Magento Composer: https://github.com/magento-hackathon/magento-composer-installer
[3] z_mage_composer_prj_01_full: https://github.com/praxigento/z_mage_composer_prj_01_full
[4] z_mage_composer_mod_01: https://github.com/praxigento/z_mage_composer_mod_01
[5] z_mage_composer_mod_02: https://github.com/praxigento/z_mage_composer_mod_02
[6] установкой: https://getcomposer.org/doc/00-intro.md#globally
[7] composer.json: https://github.com/praxigento/z_mage_composer_prj_01_full/blob/master/composer.json
[8] хранилища: http://www.magentocommerce.com/magento-connect/
[9] хранилище: http://packages.firegento.com/
[10] modman: https://github.com/praxigento/z_mage_composer_mod_01/blob/master/modman
[11] Использование различных VCS репозиториев в PhpStorm: http://habrahabr.ru/post/246503/
[12] Источник: http://habrahabr.ru/post/246703/
Нажмите здесь для печати.