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