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=.git/ --exclude=.github/ --exclude=.idea/ \ /home/user/composer-package/ \ /home/sites/mysite/vendor/vendor-name/pack-name/
Заметки:
-
Параметр
--deleteдержит целевую папку в актуальном состоянии, если файл удален в исходнике. -
Конструкция
{...}для--excludeне работает в таком режиме. - Подробнее про rsync
