Skip to content

PhpStorm ​

Плагин Bitrix Chef добавляет в PhpStorm интеграцию с CLI-инструментом @bitrix/chef:

  • Запуск unit-тестов — зелёные стрелки Run/Debug на describe/it блоках
  • Запуск e2e-тестов — зелёные стрелки Run на test()/test.describe() блоках Playwright
  • Отладка unit-тестов — Debug с breakpoints в исходном TypeScript/JavaScript коде
  • bundle.config — кастомная иконка для bundle.config.js/bundle.config.ts
  • Создание расширений — New → Bitrix Extension

Требования ​

  • PhpStorm 2025.2+
  • @bitrix/chef установлен глобально (npm install -g @bitrix/chef)

Установка ​

Через Custom Plugin Repository ​

Плагин не опубликован в JetBrains Marketplace, но можно подключить репозиторий обновлений:

  1. Откройте Settings → Plugins
  2. Нажмите ⚙️ → Manage Plugin Repositories...
  3. Добавьте URL:
    https://bitrix-tools.github.io/chef/updatePlugins.xml
  4. Найдите Bitrix Chef во вкладке Marketplace и нажмите Install
  5. Перезапустите PhpStorm

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

Из файла ​

  1. Скачайте ZIP со страницы Releases
  2. Settings → Plugins → ⚙️ → Install Plugin from Disk...
  3. Выберите скачанный ZIP
  4. Перезапустите PhpStorm

Запуск unit-тестов ​

В файлах *.test.ts / *.test.js рядом с describe и it появятся зелёные стрелки:

  • ▶ Run — запуск тестов с выводом результатов в Test Runner
  • 🐛 Debug — запуск с отладкой (breakpoints, step-by-step)

Результаты отображаются в стандартном дереве тестов PhpStorm с поддержкой навигации к коду.

Запуск e2e-тестов ​

В файлах *.spec.ts / *.spec.js рядом с test() и test.describe() (Playwright API) появятся зелёные стрелки ▶ Run.

Результаты e2e-тестов также отображаются в дереве тестов PhpStorm.

Отладка unit-тестов ​

  1. Поставьте breakpoint в исходном файле (.ts или .js)
  2. Нажмите Debug (🐛) рядом с тестом
  3. Дождитесь остановки на breakpoint

Отладка работает через Chrome DevTools Protocol — плагин подключается к Chromium, который запускает chef test.

TIP

При первом Debug запуск занимает несколько секунд дольше — Chromium стартует и загружает тестовую страницу.

Создание расширения ​

File → New → Bitrix Extension — откроет диалог:

  • Extension name — имя расширения (например, ui.my-feature)
  • Language — TypeScript или JavaScript

Команда chef create создаст структуру расширения с конфигом сборки, точкой входа и шаблонами тестов.

bundle.config ​

Файлы bundle.config.js и bundle.config.ts отображаются с иконкой Chef в дереве проекта.

oxlint ​

PhpStorm показывает находки oxlint и быстрые исправления через плагин Oxc (он работает через LSP API IDE). chef поставляет языковой сервер, который линтит и Flow-файлы:

  1. Установите плагин Oxc из JetBrains Marketplace.
  2. В Settings | Tools | Oxlint выберите Manual Oxlint configuration и укажите в Path to Oxlint Language Server chef-oxlint из глобальной установки chef ($(npm root -g)/@bitrix/chef/bin/chef-oxlint). Path to Oxlint Config оставьте пустым. В плагине Oxc до версии 0.0.44 включите там же Add --lsp CLI argument. Если сервер не запускается и IDE сообщает 'initialized' response not received from the server, обновите плагин или проверьте эту настройку.
  3. Выключите ESLint в проекте (Settings | Languages & Frameworks | JavaScript | Code Quality Tools | ESLint), иначе каждая проблема будет показана дважды.

Языковой сервер линтит каждое расширение (каталог с его bundle.config.*) как отдельную рабочую область, которая подключается при открытии первого файла расширения. Поэтому сервер стартует за секунды в репозитории любого размера. Для файла вне расширений рабочая область — ближайший каталог с package.json ниже корня проекта, иначе каталог самого файла. Файлы прямо в корне проекта, например webpack.config.js, не линтятся: их рабочей областью стал бы весь репозиторий. Конфиг — заданный в редакторе, иначе тот, который chef lint берёт для расширения: ближайший oxlint.config.ts от его src вверх до корня проекта, иначе ближайший .oxlintrc.json. Конфиги глубже внутри расширения не применяются, как и в chef lint.

Плагин Oxc отправляет серверу только файлы из каталога над node_modules, в котором он нашёл пакет oxlint. Держите oxlint в node_modules корня проекта или нигде: если oxlint установлен только в другом каталоге проекта (например, в подключённом репозитории), файлы вне этого каталога не линтятся.

Без конфига oxlint в проекте языковой сервер использует пресеты Bitrix24, как chef lint, и ничего не сообщает о файлах, которые chef lint пропускает (*.cjs, vendor, dist, минифицированные и собранные файлы), хотя плагин отправляет их на сервер. Быстрые исправления и Run 'Fix All' on Save не трогают Flow-типы. Один 'Fix All' применяет исправления, которые не пересекаются, поэтому строке с несколькими проблемами может понадобиться второе сохранение; chef lint --fix сам повторяет проходы.

Распространяется под лицензией MIT.