Форум русской поддержки Joomla!® CMS
04.12.2016, 20:21:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Настройка удобного окружения для разработки расширений Joomla

 (Прочитано 662 раз)
0 Пользователей и 1 Гость смотрят эту тему.
zaboich
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 38


« : 04.08.2015, 21:33:03 »

Исходные данные.
Для разработки расширения Joomla, например компонента, надо иметь:
1. «Установочный» каталог расширения. В этом каталоге хранятся файлы расширения в виде установочного пакета. Например:
Код:
/mycomp/ # корневой каталог расширения
/mycomp/admin/ … # каталог с файлами административной части
/mycomp/site/ … # каталог с файлами публичной части
/mycomp/com_mycomp.xml # описание расширения и инсталяционный скрипт

Из этого каталога собирается установочный пакет.

2. Тестовый сервер с каталогом сайта для тестирования.
Важное замечание: на сайте каталоги и файлы расширения разбросаны совсем не так, как в установочном пакете.

3. Редактор кода или среда разработки (IDE), с помощью которого код пишется.
4. Не обязательно, но фактически стандарт: репозиторий git + удаленный репозиторий github

Набор не большой и вполне стандартный для разработки, но есть одна неприятная сложность : структура установочного пакета = структуре хранения файлов на github != структуре файлов на тестовом сервере.

Таким образом мне видятся два варианта работы:
1. Настроить редактор на работу с файлами в «установочном» каталоге расширения.
Тогда после каждой правки, собираем пакет -> устанавливаем на тестовый сервер -> тестируем изменение.
Понятно, что git настроен на работу с каталогом расширения.
Плюсы:
+ установочный пакет всегда готов
Минусы:
- большие затраты на тестирование изменение
- установочный пакет не всегда работоспособен

2. Можно настроить редактор на работу с файлами тестового (имеет смысл только локального) сервера.
Тогда тестировать можно сразу после правки. Что бы собрать тестовый пакет надо скопировать все необходимые файлы из различных каталогов тестового сайта в каталог расширения.
Git может быть настроен на один из этих каталогов или сразу на два — контролировать и каталог расширения или/и файлы расширения в тестовом сайте.
Плюсы:
+ быстрое тестирование
+ установочный пакет всегда работоспособен
+ каталог установки версионируется без git
Минусы:
- если версионируется установочный каталог — IDE не дает подсказок о необходимости сделать коммит.
- если версионируется каталог тестового сервера, структура файлов в репозитории git не соответствует пакету установки.

Держать два репозитория git – в каталогах разработки, на тестовом сервере и в каталогах установки можно, но это усложняет систему и увеличивает возможность что-нибудь забыть.

Я использую вариант с редактированием и версионированием файлов в каталогах сервера, но  регулярно сталкиваюсь с различными неудобствами связанными с необходимостью вести несколько веток, которые в рамках одного сайта не всегда совместимы.

Возможно есть какие-то лучшие способы объединить разработку, тестирование и версионирование расширений.
Предлагаю желающим поделится опытом настройки рабочей среды разработки.
« Последнее редактирование: 25.08.2015, 02:39:41 от zaboich » Записан
b2z
Support Team
*****

Репутация: +708/-0
Offline Offline

Пол: Мужской
Сообщений: 7517


Разраблю понемногу


« Ответ #1 : 05.08.2015, 00:14:38 »

Вариант 1, только ничго не собираю - в проекте настроен деплой на тестовый сервер и все Wink Мне кажется любая IDE такое позволяет сделать.
« Последнее редактирование: 05.08.2015, 10:12:09 от b2z » Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #2 : 05.08.2015, 00:42:04 »

Использую второй вариант. На тестовом локальном сервере устанавливается каркас расширения. Потом после необходимых доработок и тестирования, при помощи phing собирается установочный пакет одним щелчком мыши. git не использую. На первый вариант мне кажется ушло бы куда больше времени, так как тестировать изменения приходится постоянно.
« Последнее редактирование: 05.08.2015, 00:50:19 от zomby6888 » Записан
b2z
Support Team
*****

Репутация: +708/-0
Offline Offline

Пол: Мужской
Сообщений: 7517


Разраблю понемногу


« Ответ #3 : 05.08.2015, 10:18:40 »

Уточню, как я работаю.

Под гитом проект со структурой сборки:
/admin
/site
/media
extension.xml // Манифест расширения
build.xml // Phing манифест

Все папки проекта настроены на авто-деплой на локальный сервер. Если нужен деплой на тестовый сервер, то либо собираю установочный пакет, либо делаю деплой нужных файлов. В PhpStorm деплои очень легко настраиваются.
Записан
zaboich
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 38


« Ответ #4 : 07.08.2015, 20:16:53 »

Спасибо!
Автоматизация этих процессов сильно упрощает дело и превращает довольно много работы из долгой рутины в почти мгновенную магию Azn

Уточню, как я работаю.
Немного не понятно в такой конфигурации:
1. Как PhpStorm получает данные об API Joomla чтобы использовать в подстановках кода, если в проекте только файлы самого расширения? К проекту include каталог распакованная Joomla?
2. Как происходит отладка, отслеживание переменных? Код запускается за пределами проекта IDE => возможности PhpStorm по отладке не используются.
3. Чем занимается Phing, если деплой происходит силами PhpStorm?
Записан
b2z
Support Team
*****

Репутация: +708/-0
Offline Offline

Пол: Мужской
Сообщений: 7517


Разраблю понемногу


« Ответ #5 : 09.08.2015, 10:49:56 »

1. include репы joomla-cms, котора у меня постоянно на диске
2. В проекте создана папка www с неотслеживаемыми файлами, которые являются симлинками на файлы локального сервера:
/www/administrator/index.php
/www/index.php
Это точки входа для дебага
3. Phing занимается конечной сборокой архива релиза. Почитайте:
http://joomlaportal.ru/blogs/extensions/2551-phing-xml-joomla
Записан
zaboich
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 38


« Ответ #6 : 14.08.2015, 02:37:05 »

Вначале показалось, что вариант zomby6888 с использованием Phing для сборки пакета более интуитивный.
Но в этом варианте возникают сложности с настройкой Git, так что бы получить в удаленном репозитории, например на github`е, готовый установочный пакет с возможностью установки из него.
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #7 : 14.08.2015, 17:45:14 »

Ну я с git не работаю, как я уже писал, но тоже проблемы особо не вижу. Вы же можете создать репозиторий из любой папки. Чтобы отслеживать изменения вы можете в PhpStorm в папку с проектом инклудить папку с сборкой(include Path в настройках PHP проекта). Создаете репозиторий из папки со сборкой и делаете оттуда и push/pull реквесты.
« Последнее редактирование: 14.08.2015, 17:55:06 от zomby6888 » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet