Я хочу научиться правильно собирать крупные веб-проекты, которые состоят из большого количества компонентов, и включают PHP, JS, CSS... Хотелось бы пользоваться менеджерами пакетов, для PHP - Composer, для JS/CSS - Bower. Хочется делать автоматическую компиляцию LESS/SASS в CSS, сборку итп. Phing - пожалуй тоже было бы приятно использовать.
Я почитал много теоретических статей и литературы о том как надо это правильно в современном мире. К сожалению, статьи обычно или полностью сосредоточены на PHP или полностью на JS/CSS, но в моих проектах и то и другое важно. Чтобы увидеть как это делается на практике, я пошел смотреть устройство популярных проектов на GitHub (в основном CMS, интернет магазины итп). Я с удивлением обнаружил что на практике, максимум что используется в этих проектах, так это Composer. При этом весь проект находится в web-root, и там вперемешку идут JS и PHP. А ведь в учебниках учат что PHP должен быть за пределами директории public_html!
Подскажите пожалуйста какие нибудь проекты в которых все это делается "правильно". Или на практике никто не делает проекты "правильно" и это лишь теоретические рекомендации далекие от реальной жизни? Или я что то недопонимаю.
Ох, grunt и bower (While Bower is maintained, we recommend yarn and webpack for new front-end projects!) сейчас уже никто не использует. gulp еще кое-где живет, но далеко не везде. Фронтендовые пакеты ставятся npm, сборка — webpack.
Интеграция с бэкендовой сборкой сводится обычно к запуску npm run build в нужной директории (любой сборщик умеет запускать произвольную внешнюю команду).
P.S. Да, webpack это больно, но сейчас гораздо проще найти готовый конфиг и минимально допилить под себя. Еще yeoman помогает.
While Bower is maintained, we recommend yarn and webpack for new front-end projects
Отстал от времени! Ладно, разберемся с yarn и webpack.
Но все равно, остается вопрос, как правильно разложить части всего проекта по директориям, чтобы оно все изящно собиралось, обрабатывалось и исполнялось.
Поищи уроки Laravel + Vue.js, буквально начало создания проекта, там и увидишь, только там вместо public_html будет src. Npm, webpack тоже присутствуют.
Чет я не понял про php за пределами public_html. Думаю, имелся в виду интерпретатор, а не исполняемые файлы. В самом веб-проекте логику и структуру вы задаете сами, и все лежит вперемешку (хотя обычно под css- и js-файлы создают отдельные папки), и никаких проблем это не вызывает. Мне кажется, вы слишком заморачиваетесь, при этом мало практикуясь )
Практики как раз много. Но есть стойкое чувство что делаю не так как положено и постоянно изобретаю велосипеды.
"php за пределами public_html"
Я имел ввиду что все что не предназначено для получение через браузер не должно находиться внутри "public_html". Все что недоступно через веб-сервер должно лежать уровнем выше, а не закрываться через htaccess. Т.е. всякие исходники JS, LESS, тесты, все PHP-скрипты кроме точки входа, все должно быть выше.