Меню

Философия подхода

Нам нравится идеология UNIX/Linux - один компонент или одна программа должны выполнять только какую-то одну задачу, но зато выполнять её хорошо. Поэтому в разработках на PHP мы используем менеджер пакетов Composer, даже в разработках на “1С-Битрикс”, и проводим качественное тестирование и проверку качества кода.

Opensource позволяет нам в любой момент сделать свою версию репозитория и развивать её независимо от вендора - если это так необходимо для конкретного проекта. Мы можем кэшировать репозитории с помощью Satis на случай катастроф или отключения Github-а, или же, если проект долговременный и важна поддержка и развитие - допиливать проект совместно с вендором, к нашей совместной выгоде.

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

Даже уходя из компании, наши тимлиды продолжают развивать опенсорс продукты и, таким образом, помогают своей alma mater. Которая, в свою очередь, помогает им. Идеальный пример отношений win-win.

Мы трепетно относимся к документации. Значительный профессиональный опыт научил нас, что лучше один раз написать ответы на вопросы, чем сто раз их услышать.

Наконец, мы просто хотим сделать мир лучше и добрее :) Поэтому мы делимся с Вами своими наработками.

Как перестать бояться и начать использовать composer в проектах на 1С-Битрикс

Композер нужен для того, чтобы быстро подключать нужные версии пакетов (модулей, библиотек) на свои проекты. Чтобы понять базовые вещи касательно него, почитайте статью на Хабра-Хабре К счастью (и нашими стараниями тоже), композер научен работать с 1С-Битрикс, хотя есть несколько ньюансов. Прежде чем преступить к использованию composer в 1С-Битрикс, убедитесь, что вы знаете:

  • Что вы знаете, чем отличается composer install от composer update.
  • Вы развернули зависимости с помощью composer на любом проекте, на любом фрэймворке, хотя бы раз.
  • Вы знаете, к чему приводит правка файла composer.json

Если вышеописанные требования выполнены, Вы можете приступать к использованию Composer в 1С-Битрикс.

  • Положите composer.json в document_root проекта. Туда, где лежит urlrewrite.php и корневой index.php.
    Здесь же Вы можете разместить файл composer.phar, который содержит в себе исполняемое приложение Композера.

  • Правильно настройте свой файл .gitignore. Здесь часто допускают ошибки, правильная схема следующая:

    • Git игнорирует папку vendor/ и composer.phar - первая должна разворачиваться с помощью composer, а второй вовсе лучше не "таскать" за собой. Корпоративный сектор зачастую боится отключения Github/жёстких политик безопасности. Не поддавайтесь на провокации. Вместо игнорирования вышеописанного правила, лучше воспользуйтесь кэширующим сервером наподобие Satis, установленным на отдельную, доверенную машину.
    • Git НЕ игнорирует файл composer.lock - без этого файла Вы никак не можете развернуть на продуктивной площадке именно те версии пакетов, что были Вами протестированы на других площадках.
  • Настройте свой веб-сервер
    vendor, composer.lock, composer.json, composer.phar должны быть недоступны для посетителей сайта, при обращении к этим файлам должна отдаваться страница 404 или 403.
    Если у Вас работает Apache, то Вы можете сделать это через файл .htaccess.

  • Настройте файл composer.json

    • Обязательно подключите пакет composer/installers - он позволит устанавливать модули 1С-Битрикс.
    • Обязательно прописывайте версии подключаемых пакетов. Это особенно важно для корпоративной разработки, когда Вы не можете позволить себе спонтанного обновления установленных библиотек и модулей.
    • Шаблоны вёрстки должны подключаться через Composer
    • Модули и наработки компании должны подключаться через Composer
    • В разделе repositories укажите доступ к Satis (если он есть)
    • Там же отключите прямой доступ к Github/Packagist, если это нужно ("packagist": false)
    • Пропишите там же доступ к репозиториям с вёрсткой и репозиториям в git-е Вашей компании
    • В разделе "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"
    }
  ]
}
  • Начинайте разрабатывать свои модули на базе существующих решений и/или заготовок.

  • Экономьте время разработчиков и деньги компании. Не пишите решения дважды! Разрабатывайте модули, отдавайте их в опенсорс и делайте проекты совместно с коллегами по цеху!