PHPStorm File Watcher + WSL rsync для композер-пакета
Часто нужно одновременно поддерживать композер-пакет и проверять его в другом проекте, где он реально используется. Варианты вроде composer update с деф-версией, ручной правки прямо в целевом проекте или копирования изменений обратно в пакет быстро превращаются в боль - легко запутаться и теряется время.
Решение - настроить автоматическую синхронизацию: работаем в чистом репозитории пакета, а любые сохранения сразу попадают в проект, где пакет используется. Схема простая: IDE следит за изменениями и через синк-инструмент обновляет их в целевой папке проекта. В результате цикл правка-проверка становится почти мгновенным, без ручных апдейтов.
Т.е. задача: редактировать код пакета в отдельном проекте, а изменения проверять там где пакет используется - без дополнительных composer update.
-
Если работаешь на Ubuntu - все просто:
rsyncесть из коробки, PhpStorm крутится на Ubuntu, команды выполняются напрямую. Вотчер настраивается без обходных путей. - Здесь я показываю кейс для WSL: PhpStorm работает на Windows, а синхронизация идет командой, запущенной внутри WSL. Идея та же, только стартуем
rsyncиз Linux-среды, пока правим код в Windows.
Условия:
- Windows + WSL.
- Оба пути доступны в WSL как Linux-пути.
Настройка PHPStorm File Watcher
- Name:
Sync package via WSL rsync - File type:
Any - Scope:
Project Files - Program:
wsl.exe - Arguments:
-e rsync -azv --delete --exclude=.idea/ --exclude=.git/ --exclude=.github/ --exclude=vendor/ --exclude=node_modules/ --exclude=tests/ --exclude=tmp/ --exclude=phpunit.xml --exclude=composer.json --exclude=composer.lock --exclude=.distignore --exclude=.gitignore --exclude=.gitattributes --exclude=.editorconfig /home/user/packs/composer-package/ /home/user/sites/mysite/vendor/vendor-name/pack-name/
Заметки:
-
Параметр
--deleteдержит целевую папку в актуальном состоянии, если файл удален в исходнике. -
Конструкция
{...}для--excludeне работает в таком режиме. - Подробнее про rsync
