Я организовал работу как-то так: есть директория assets, в которой исходники js-ок, less файлики, картинки для оформления и т.д. Собирает это дело сейчас gulp, раньше grunt и ложит в webroot куда ему скажут. При чем для разработки настроены ватчеры (можно сделать и в ide, но не всегда разработчики пользуются оными, некоторые используют vim, да и банально удобнее) и лайврелоад, так что при разработке не нужно перезагружать страницу, что немного уменьшает временные издержки. Ну и так же для сборки настроена оптимизация изображений.
Собственно когда делается пуш в мастер на сервере стартует сборка проекта, (сборка асетов, вармап кэша, установка зависимостей) и затем все это уже перетекает на сервак, где отрабатывают миграции и релоадится сервер (nginx reload с переключением симлинков)