/bitrix-project

Заготовка 1C Bitrix проекта: автозагрузка, композер, базовые ООП компоненты, миграции, модели, современный фронтенд стек, инструменты для деплоя.

Primary LanguagePHP

Bitrix Project

Заготовка для 1C Bitrix проектов.

Создание нового проекта

Стандартно установить или развернуть из бекапа копию Битрикса.

Клонировать репозиторий (за пределами публичной директории веб-сервера).

Переинициализировать репозиторий: удалить директорию .git и выполнить git init.

Установить зависимости и "собрать" фронтенд:

composer install && npm install && npm run encore -- dev

Перенести в корень клонированного проекта содержимое директорий bitrix, upload и local (не затирая файл local/php_interface/init.php).

В директорию sites/s1 перенести публичные файлы сайта.

Настроить вебсервер для работы с директорией sites/s1 либо сделать симлинк вида

/home/bitrix/www -> /home/bitrix/projectname/sites/s1

Создать файл .env

touch .env

Заполнить его данными в соответствии с файлом-образцом .env.example

Выполнить команду

./vendor/bin/jedi env:init default

Эта команда скопирует в директорию bitrix системные файлы настроек сконфигурированные для работы с переменными окружения, а также настройки шаблонизатора Twig и логгера Monolog

Установить модуль миграций

php migrator install

Доустановить модуль Базовых Битрикс компонентов. в административном интефейсе:

Marketplace > Установленные решения > ББК (bex.bbc)

Бэкенд

Composer и PSR-4 автозагрузка классов из директории local/classes. Пространство имен \Local\

Используемые пакеты:

Контроль качества

Для проверки пхп-кода используется squizlabs/PHP_CodeSniffer.

Код проверятся в соответствии с набором правил, описанных в файле ruleset.xml.

На данный момент, это стандарт PSR-2 (рус./англ.), а также наличие PHPDoc-комментариев.

Проверяются файлы из директорий local/classes и local/components (за исключением файлов template.php)

Проверка осуществляется командой (это запуск утилиты phpcs с предустановленными параметрами)

composer run lint:php

Также есть возможность исправить часть обнаруженных ошибок утилитой phpcbf

composer run fix:php

Фронтенд

В качестве "сборщика" изпользуется symfony/webpack-encore.

По-умолчанию файлы фронтенда должны располагаться в директории local/assets.

Это можно переопределить в файле конфигурации webpack.config.js

Основные команды:

npm run encore -- dev          # запустить сборку один раз
npm run encore -- dev --watch  # запустить сборку в режиме слежения за файлами
npm run encore -- production   # запустить сборку для продакшена

Технологии

Vue

Мини-модуль vueInvoker предназначен для инициализации Vue компонентов на странице. Он упрощает использование Vueклассическом веб-приложении, когда нет возможности использовать один "корневой" экземпляр Vue (Как, например, это устроено в одностраничных приложениях).

Использование:

Вывести на страницу элемент-плейсхолдер для компонента:

<div class="vue-component" data-component="DemoApp" data-initial='{"test": "data"}'></div>

Создать соответствущий Vue-компонент (в директории local/assets/scripts/vue/components/:

<template>
    <div class="demo-app">
        {{ hello }}

        {{ initial.test }}

    </div>
</template>

<script>
    export default {
      data() {
        return {
          hello: 'World',
        };
      },
      props: ['initial'],
    };
</script>

Добавить его в Коллекцию local/assets/scripts/vue/collection.js:

import DemoApp from './components/DemoApp.vue';

export default {
  DemoApp,
};

Контроль качества

JS-файлы проверяются на соответствие стандарту airbnb утилитой ESLint. Конфигурация линтера - файл .eslintrc

npm run lint:scripts  # показать ошибки
npm run fix:scripts   # исправить ошибки

SCSS-файлы проверяются утилитой stylelint. Основа - набор правил sass-guidelines. Конфигурация - файл .stylelintrc

npm run lint:styles  # показать ошибки
npm run fix:styles   # исправить ошибки

За исправление стилевых файлов отвечает пакет stylefmt

Многосайтовость

Структура проекта напоминает заранее настроенную многосайтовость на разных доменах с отдельными директориями для каждого сайта. Файлы ядра подключаются относительными символическими ссылками. Для добавления нового сайта нужно создать новую директорю в ./sites/(лучше всего если ее название будет соответствовать коду нового сайта). И добавить в нее ссылки на необходимые файлы и директории:

mkdir sites/s2             # создать директорию для дополнительного сайта
cd sites/s2                # перейти в нее
ln -s ../../bitrix bitrix  # и
ln -s ../../local local    # добавить 
ln -s ../../upload upload  # ссылки     

Далее необходимо настроить веб-сервер для работы с новым сайтом.

Разное

Версионирование и деплой

Гайдлайн разработки Битрикс-проекта

Для пользователей Phabricator

В файле .arclint настроены основные проверки кода, в том числе описанные выше.