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, но можно подключить репозиторий обновлений:
- Откройте Settings → Plugins
- Нажмите ⚙️ → Manage Plugin Repositories...
- Добавьте URL:
https://bitrix-tools.github.io/chef/updatePlugins.xml - Найдите Bitrix Chef во вкладке Marketplace и нажмите Install
- Перезапустите PhpStorm
Обновления будут приходить автоматически.
Из файла
- Скачайте ZIP со страницы Releases
- Settings → Plugins → ⚙️ → Install Plugin from Disk...
- Выберите скачанный ZIP
- Перезапустите 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-тестов
- Поставьте breakpoint в исходном файле (
.tsили.js) - Нажмите Debug (🐛) рядом с тестом
- Дождитесь остановки на 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-файлы:
- Установите плагин Oxc из JetBrains Marketplace.
- В 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, обновите плагин или проверьте эту настройку. - Выключите 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 сам повторяет проходы.