Нам нравится идеология UNIX/Linux - один компонент или одна программа должны выполнять только какую-то одну задачу, но зато выполнять её хорошо. Поэтому в разработках на PHP мы используем менеджер пакетов Composer, даже в разработках на “1С-Битрикс”, и проводим качественное тестирование и проверку качества кода.
Opensource позволяет нам в любой момент сделать свою версию репозитория и развивать её независимо от вендора - если это так необходимо для конкретного проекта. Мы можем кэшировать репозитории с помощью Satis на случай катастроф или отключения Github-а, или же, если проект долговременный и важна поддержка и развитие - допиливать проект совместно с вендором, к нашей совместной выгоде.
Мы обязательно соблюдаем семантическое версионирование - это строгая необходимость для коммерческих проектов, в которых нельзя позволить себе спонтанную поломку обратной совместимости. Благодаря этому ни одного провала из-за изменения кода вендора не было, и при этом мы не потеряли гибкость и получение апдейтов.
Даже уходя из компании, наши тимлиды продолжают развивать опенсорс продукты и, таким образом, помогают своей alma mater. Которая, в свою очередь, помогает им. Идеальный пример отношений win-win.
Мы трепетно относимся к документации. Значительный профессиональный опыт научил нас, что лучше один раз написать ответы на вопросы, чем сто раз их услышать.
Наконец, мы просто хотим сделать мир лучше и добрее :) Поэтому мы делимся с Вами своими наработками.
Композер нужен для того, чтобы быстро подключать нужные версии пакетов (модулей, библиотек) на свои проекты. Чтобы понять базовые вещи касательно него, почитайте статью на Хабра-Хабре К счастью (и нашими стараниями тоже), композер научен работать с 1С-Битрикс, хотя есть несколько ньюансов. Прежде чем преступить к использованию composer в 1С-Битрикс, убедитесь, что вы знаете:
composer install
от composer update
.composer.json
Если вышеописанные требования выполнены, Вы можете приступать к использованию Composer в 1С-Битрикс.
Положите composer.json в document_root проекта. Туда, где лежит urlrewrite.php
и корневой index.php
.
Здесь же Вы можете разместить файл composer.phar
, который содержит в себе исполняемое приложение Композера.
Правильно настройте свой файл .gitignore
. Здесь часто допускают ошибки, правильная схема следующая:
vendor/
и composer.phar
- первая должна разворачиваться с помощью composer, а второй вовсе лучше не "таскать" за собой. Корпоративный сектор зачастую боится отключения Github/жёстких политик безопасности. Не поддавайтесь на провокации. Вместо игнорирования вышеописанного правила, лучше воспользуйтесь кэширующим сервером наподобие Satis, установленным на отдельную, доверенную машину.composer.lock
- без этого файла Вы никак не можете развернуть на продуктивной площадке именно те версии пакетов, что были Вами протестированы на других площадках.Настройте свой веб-сервер
vendor
, composer.lock
, composer.json
, composer.phar
должны быть недоступны для посетителей сайта, при обращении к этим файлам должна отдаваться страница 404 или 403.
Если у Вас работает Apache, то Вы можете сделать это через файл .htaccess
.
Настройте файл composer.json
composer/installers
- он позволит устанавливать модули 1С-Битрикс.repositories
укажите доступ к Satis (если он есть)"packagist": false
)"extra"
/"installer-paths"
пропишите указания для composer-а, куда и как устанавливать вёрстку и модули.В результате Ваш composer.json
должен преобрести примерно следующий вид:
{
"name": "notamedia/myproject",
"description": "Проект от агенства Notamedia",
"keywords": [
"bitrix"
],
"homepage": "http://nota.media",
"type": "project",
"license": "Commerce",
"support": {
"issues": "http://issues.notamedia.ru",
},
"config": {
"process-timeout": 1000
},
"minimum-stability": "stable",
"require": {
"php": ">=5.4.0",
"notamedia/console-jedi": "v1.0",
"notamedia/projectmarkup": "v1.0.1",
"digitalwand/digitalwand.admin_helper": "2.0.1",
"composer/installers": "1.0.22",
},
"require-dev": {
"phpunit/phpunit": "4.8.x-dev",
},
"extra": {
"installer-paths": {
"local/templates/.default/project_markup": ["notamedia/projectmarkup"]
}
},
"repositories": [
{
"packagist": false
},
{
"type": "composer",
"url": "http://satis.for.friends.notamedia.ru"
},
{
"type": "vcs",
"url": "git@some.gitpath.notamedia.ru:notamedia/projectmarkup"
}
]
}
Начинайте разрабатывать свои модули на базе существующих решений и/или заготовок.
Экономьте время разработчиков и деньги компании. Не пишите решения дважды! Разрабатывайте модули, отдавайте их в опенсорс и делайте проекты совместно с коллегами по цеху!