Как правильно и удобно организовать развертывание ПО и применение правок?
Проблема в следующем:
1. Я верстаю сайт по макету, он собирается webpack'ом/gulp'ом, еще чем-то. На выходе я имею папку build с нужными файлами, которые корректно отображаются в браузере.
2. Допустим, есть еще функционал на vue.js/svelte и т. д., его по хорошему тоже надо встраивать как-то в этот билд из первого пункта, чтобы видеть всю картину и как она работает в связке с сайтом. Тут приходится копировать этот билд vue.js/svelte руками в билд сайта из пукнта 1. Либо прописывать дополнительное копирование этого билда в билд пукнта 1.
3. Потом, результат этих стараний надо встроить, например, в Laravel. Html файлики из билда 1 обзываются теперь что-то там.blade.php, дробятся на модули, компоненты и так далее.
4. Пишется функционал на PHP.
5. Когда все оттестировано и работает, заливается на боевой сервер.
Вроде бы всё, но тут обнаруживается, что надо сделать изменение верстке сайта. И тут начинается адок. Вношу изменения в пункт 1, перебилдиваю. Ищу где там в шаблонах blade laravel'я этот файл, изменения в которые надо засунуть. Встаю перед вопросом, заменить все и прописать по новой всякие {{ $variable }} или кусочками делать изменения в готовом шаблоне blade. Обновляю css файл в laravel.
Сохраняю, проверяю. Если все удачно, заливаю изменения на боевой сервер.
И ладно бы, если таких правок будет 2-3, но когда их много, эту цепочку надо делать снова и снова руками. Если где-то ошибиться и не то скопировать или забыть обновить, залить не то на сервер, все рассыпается. Это просто ужас. Помогите, пожалуйста, как со всем этим быть?
У Laravel есть Laravel Mix в комплекте, который спокойно позволяет оптимизировать все ваши махинации.
Запускаете команду npm run watch и спокойно пишете код, если нужно обновление страницы при изменениях - подключаете browserify.
Смотрите в сторону Laravel Envoy, настраиваете все данные для деплоя на сервер. Все это деплоится с git-репозитория вашего проекта.
В итоге весь маршрут от выполнения правок до деплоя проекта состоит по сути из следующих этапов:
1. Выполняете правки, просматриваете через npm run watch
2. Комитите все в свой репозиторий.
3. Выполняете команду envoy run deploy и все изменения с репозитория подтягиваются на сервер.
Подскажите, пожалуйста, на счёт Laravel Mix, получается, сайт нужно изначально начинать верстать в blade шаблонах создав приложение на Laravel или все таки можно верстать отдельно, а потом это интегрировать с laravel с помощью Mix?
Если верстать отдельно, то как быть со встраиванием {{ переменная }} в blade шаблон из сверстанного проекта автоматически?
Fedooot01, зачем интегрировать? Вы сразу пишете все в проекте Laravel, в blade-шаблонах. Laravel Mix вам на лету компилирует все ваши sass, vue, ts файлы. Зачем делать целую кучу промежуточных действий, когда можно все писать сразу же в проекте? Laravel уже обо всем за вас позаботился, вам остается только писать код вашего приложения.
Алексей Скляров, в целом все понял, остлолсь попробовать. А на счёт интеграции, иногда некоторые вещи, например, на Vue.js надо переиспользовать в разных проектах. Я так понял, если начать ее делать в конкретном laravel проекте, то этот vue.js компонент в нем и замуруется и в другой проект его не вытащить.
Fedooot01, почему не вытащить? возможность переиспользования ваших компонентов зависит не от проекта, в котором они реализуются, а от качества вашего кода. Пишите отдельно модули, пишите компоненты так, чтобы они могли использоваться в других проектах и спокойно переносите из проекта в проект.
Алексей Скляров, пробую Laravel Mix на новом проекте, возникла пара вопросов:
Начал верстку сразу с blade шаблонов, в mix добавил browserSync чтобы сверстанное обновлялось и было видно результат. После npm run watch всё стартует, на localhost:3000 по логам поднимается browserSync, но при переходе по этому адресу в браузере ничего нет. Просто бесконечная загрузка.
Я так понимаю, помимо верстки надо сразу писать контроллеры, роуты и заодно запускать php сервер? (Использую Open Server). Сделал так, но в браузере по localhost:3000 все так же пусто. Подскажите, пожалуйста, что с этим делать?
Что за адок не особо понятно. У меня также vue blade laravel bootstrap. Юзаю команды npm run watch - вношу изменения, npm run prod - продакшн. Далее гит + форге для деплоя. Вообще никаких проблем/неудобств.