Skip to content

Команды разработки (dev)

Стандартные команды Битрикс для разработки: генерация метаданных для IDE и создание структуры директорий в существующем модуле.

Краткая справка

КомандаЧто делаетВажно знать
dev:locator-codesГенерирует .phpstorm.meta.php для автодополнения Service LocatorТребует существующий модуль
dev:module-skeletonСоздаёт только поддиректории в /lib существующего модуля⚠️ НЕ создаёт модуль с нуля! Только папки в уже существующем модуле

Создание модуля

Для создания нового модуля используйте ручное создание структуры + команды make:* для генерации компонентов. См. раздел Создание нового модуля с нуля


dev:locator-codes

Генерирует файл .phpstorm.meta.php для автодополнения Service Locator в PhpStorm.

Синтаксис

bash
php bitrix.php dev:locator-codes <module> [code]

Аргументы

  • module - ID модуля для генерации метаданных
  • code - код для генерации (необязательный параметр)

Опции

  • --show - выводит содержимое в консоль без сохранения файла

Примеры использования

bash
# Генерация файла метаданных для модуля main
php bitrix.php dev:locator-codes main

# С указанием кода
php bitrix.php dev:locator-codes iblock bitrix_iblock_locator_codes

# Вывод в консоль (без сохранения)
php bitrix.php dev:locator-codes main --show

# Сохранение в произвольный файл
php bitrix.php dev:locator-codes main --show > ./my/custom/path/.phpstorm.meta.php

# Для других модулей
php bitrix.php dev:locator-codes catalog
php bitrix.php dev:locator-codes sale

Что делает команда

Команда создает файл метаданных .phpstorm.meta.php, который помогает PhpStorm:

  • Распознавать сервисы из Service Locator'а Битрикс
  • Предоставлять автодополнение для методов
  • Улучшать навигацию по коду
  • Предоставлять подсказки по типам

Где сохраняется файл

По умолчанию файл сохраняется в корне модуля:

/bitrix/modules/<module>/.phpstorm.meta.php

Пример сгенерированного файла

php
<?php
namespace PHPSTORM_META {
    registerArgumentsSet('service_locator_services',
        'main.user',
        'main.application',
        'iblock.element',
        // ... другие сервисы
    );
    
    expectedArguments(
        \Bitrix\Main\DI\ServiceLocator::get(),
        0,
        argumentsSet('service_locator_services')
    );
}

dev:module-skeleton

ВАЖНО

Эта команда НЕ создаёт модуль с нуля. Она только создаёт структуру поддиректорий внутри уже существующего модуля в папке /lib.

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

Создаёт структуру поддиректорий в папке /lib существующего модуля.

Синтаксис

bash
php bitrix.php dev:module-skeleton <module> [dir]

Аргументы

  • module - ID существующего модуля (формат: vendor.module)
  • dir - название поддиректории для создания в /lib (необязательный параметр)

Как это работает

Команда:

  1. Проверяет существование модуля в /bitrix/modules/<module>/ или /local/modules/<module>/
  2. Если модуль не найден - выдаёт ошибку: "No such module"
  3. Если модуль найден - создаёт поддиректории в /lib/[Dir]/

Правильная последовательность создания модуля

bash
# 1. Сначала создайте базовую структуру модуля вручную
mkdir -p /local/modules/my.custom.module/lib
mkdir -p /local/modules/my.custom.module/install

# 2. Теперь можно использовать команду для создания поддиректорий
php bitrix.php dev:module-skeleton my.custom.module Entity

Примеры использования

bash
# ❌ НЕ РАБОТАЕТ - модуль не существует
php bitrix.php dev:module-skeleton my.custom.module
# Ошибка: No such module

# ✅ РАБОТАЕТ - сначала создаём модуль
mkdir -p /local/modules/my.custom.module/lib
php bitrix.php dev:module-skeleton my.custom.module

# ✅ Создание поддиректории Entity в существующем модуле
php bitrix.php dev:module-skeleton my.custom.module Entity
# Создаст: /local/modules/my.custom.module/lib/Entity/

# ✅ Создание вложенной структуры
php bitrix.php dev:module-skeleton my.custom.module Controller/Api
# Создаст: /local/modules/my.custom.module/lib/Controller/Api/

Что на самом деле создаёт команда

Команда создаёт только пустые директории в /lib:

/local/modules/vendor.module/lib/[Dir]/

Команда НЕ создаёт:

  • ❌ Файл install/index.php
  • ❌ Файл install/version.php
  • ❌ Файл include.php
  • ❌ Файл options.php
  • ❌ Языковые файлы
  • ❌ Базовую структуру модуля

Продвинутые сценарии

Автоматическое обновление метаданных после установки модулей

bash
#!/bin/bash
# Хук для обновления метаданных после установки модуля

MODULE_ID="$1"

if [ -z "$MODULE_ID" ]; then
    echo "Использование: $0 <module_id>"
    exit 1
fi

cd /var/www/bitrix

# Установить модуль
php bitrix.php module:install "$MODULE_ID"

# Сгенерировать метаданные
php bitrix.php dev:locator-codes "$MODULE_ID"

# Очистить кеш
php bitrix.php cache:clear

echo "Модуль $MODULE_ID установлен, метаданные обновлены"

CI/CD: генерация метаданных при деплое

bash
#!/bin/bash
# Скрипт деплоя с генерацией метаданных

cd /var/www/bitrix

# Обновить код
git pull origin master

# Установить зависимости
composer install

# Обновить метаданные для кастомных модулей
for module in /local/modules/company.*; do
    if [ -d "$module" ]; then
        MODULE_ID=$(basename "$module")
        echo "Обновление метаданных: $MODULE_ID"
        php bitrix.php dev:locator-codes "$MODULE_ID"
    fi
done

# Очистить кеш
php bitrix.php cache:clear

echo "Деплой завершен"

Troubleshooting

Метаданные не генерируются

Проблема: Файл .phpstorm.meta.php не создается

Решения:

  1. Проверьте права доступа к директории модуля
  2. Убедитесь, что модуль существует и установлен
  3. Используйте опцию --show для проверки вывода
  4. Проверьте логи PHP

PhpStorm не видит автодополнение

Проблема: После генерации метаданных автодополнение не работает

Решения:

  1. Перезапустите PhpStorm
  2. Invalidate Caches: File → Invalidate Caches → Invalidate and Restart
  3. Убедитесь, что файл .phpstorm.meta.php находится в корне модуля
  4. Проверьте синтаксис сгенерированного файла

Ошибка "No such module"

Проблема: При выполнении dev:module-skeleton выдаётся ошибка "No such module"

Причина: Команда ищет уже существующий модуль. Она не создаёт модуль с нуля.

Решение:

  1. Сначала создайте базовую структуру модуля вручную:
bash
mkdir -p /local/modules/my.custom.module/lib
mkdir -p /local/modules/my.custom.module/install
  1. Только потом используйте команду:
bash
php bitrix.php dev:module-skeleton my.custom.module Entity

Команда создаёт пустые директории

Проблема: Команда создаёт только пустые папки без файлов

Причина: Это нормальное поведение. Команда dev:module-skeleton создаёт только структуру директорий в /lib.

Решение:

  • Файлы модуля (install/index.php, include.php и т.д.) создавайте вручную
  • Или используйте команды make:* для генерации компонентов, контроллеров и ORM-классов

Полезные советы

💡 dev:module-skeleton - не создаёт модуль - команда только делает поддиректории в существующем модуле

💡 Создавайте модули вручную - используйте скрипты для автоматизации создания базовой структуры

💡 Генерируйте метаданные регулярно - обновляйте после установки новых модулей командой dev:locator-codes

💡 Используйте make-команды - для генерации компонентов, контроллеров и ORM используйте make:*

💡 Интегрируйте в CI/CD - автоматизируйте генерацию метаданных при деплое

💡 Следуйте PSR-4 - размещайте классы в /lib с правильным namespace

💡 Версионируйте модули - обновляйте версию в install/version.php при изменениях


Смотрите также

Документация BXMax CLI