Уважаемые форумчане, вопрос конечно заезженный донельзя, но толкового ответа, я так и не встретил. Суть, когда я, например написал приложение на vue - собрал билд, отправил его на прод. В моем случае, вообще ide синхронизируется с продакшен сервером. Все прозрачно и просто, на сервер попадают исключительно файлы сборки и ничего более (никаких node_modules, конфигов и т.д. и т.п.). В случае с nuxt непонятно, он конечно после билда формирует папку dist, внутри своих потрохов, а именно /.nuxt/dist. Возможно директорию назначения и можно изменить, но не в этом проблема. С клиентской частью все понятно, а с серверной? В папке server, кроме html и json нет ничего более. Запустить нечего! И сдается мне, что если даже закатать на прод всю папку .nuxt, то это не поможет. Все файлы в этой папке, которые можно запустить на ноде, тянут за собой кучу зависимостей из той же /node_modules. То есть это что, получается заливать на сервер необходимо все, вместе с dev окружением? И только так запускать... Блин, не комильфо! Вот и хочу спросить у знающих в этом вопросе людей, может я что недопонимаю.
jeruthadam, то есть, о чем я и сказал - полностью все тащить на прод нужно... это конечно не смертельно, но как по мне, ерунда какая-то. Тащить на прод тонны барахла, которое нужно для разработки, только ради того, чтобы запустить приложение :( Что же придется, мне ssr необходим, можно конечно поковыряться и самому настроить vue под ssr, но на вскидку мне кажется такая задача не на пару часов...
Алексей, не понятно а как ты SSR пытался делать БЕЗ поднятия окружения? Как оно будет по твоему рендерится на каждый запрос без Node сервера? Это же не статические файлы. Статику можно если ты generate используешь только
Почему без node? Какой-то у тебя странный вопрос... Нода у меня стоит на vps-ке, а причем тут все остальные кишки которые тянутся за vue - nuxt - webpack и иже с ними, необходимыми для разработки. Я же могу выполнить без /node_modules скрипт на сервере npm script.js. Ну я по крайней мере точно могу, не скажу за всех, может кому-то это и не под силу.
Алексей, oh rly? Какой-то у тебя странный ответ (впрочем не странный, а просто нубярский) Ну напиши сервер на Express.js, потом перенеси свой server.js файл на свою VPS и попробуй запустить его без node_modules.
jeruthadam, нуб это ты, причем здесь express.js? Я разве про него сказал? А ты все ни как врубится не можешь... Мне и не нравится то, что в билд не собирается серверная часть, о чем в топике еще сказал. А ты тут усираешся доказываешь мне про зависимости, о которых опять же я еще в теме упомянул. Умей читать вопрос, если уж собрался давать на него ответ!
Алексей, ну вот ты и показал свой реальный уровень, который где-то на дне...
Прежде чем лезть в Нукст, лучше бы осилил понять что такое SSR и как он работает. У Нукста главная зависимость - Connect. Именно он и рендерит страницы. Нукст билдит не статические файлы, умник, но ты похоже даже спустя мои 3 сообщения с этим не смиришся.
Ты там заикался что типа можешь (в чем я сильно сомневаюсь, учитывая твой уровень дна) сам сделать SSR с Вью - ну вперед, я хочу посмотреть как ты будешь делать некий статический билд, которому не понадобится сервер для рендера)))
jeruthadam, заканчиваем диалог, так как ты не понял сути вопроса! То что серверная часть кода представляет из себя сервер как таковой, я и без тебя умника знаю. И твои потуги в этом вопросе мне за ненадобностью. И об этом я сразу указал в теме вопроса. Суть вопроса заключалась в том, может ли nuxt собрать серверный код в билд без подтягивания внешних зависимостей из node_modules. А так как на дне ты, то ты и не знаешь, что существуют подобные сборки ssr. Но о чем это я с тобой! Фактически, твоим правильным и нормальным ответом был бы такой - "Да nuxt не собирает серверные зависимости в билд и поэтому и придется тащить все на сервер или искать другие решения". Вот примерный вид ответа на мой вопрос, но как я понимаю из нашего диалога, тебе тяжело было уловить и осмыслить суть вопроса. Зато переходить на личности, ты мастер!
jeruthadam, Мое высказывание "Ну я по крайней мере точно могу, не скажу за всех, может кому-то это и не под силу", вовсе не подразумевало под собой конкретные личности, в отличии от твоих высказываний. И не ставил под сомнения твою компетенцию в прикладном вопросе. А то что найдется вагон и маленькая тележка людей и даже начинающих разработчиков, для которых запуск приложения из под консоли - это темный лес, я думаю хоть этот факт, ты оспаривать не станешь! О какой матчасти ты говоришь? У меня за плечами не первая сотня поднятых серверов, и не только на ноде. Искренне надеюсь, что хотя бы сейчас ты понял о чем я спрашивал? Я вообще считаю, что если даже задающий вопрос (предположим гипотетически), не в теме, то стебаться не над чем, человек пытается разобраться в вопросе. А уж тем более в моем случае, когда я полностью разжевал вопрос и практически сам на него ответил. И где от отвечающего, требовалось всего навсего, либо подтвердить мои высказывания - "Да, все так, как ты сказал", или опровергнуть - "Нет, имеется такая то... возможность". Ладно, закончим с этой темой, надеюсь мы поняли друг друга, в хорошем смысле этого слова. И если уж ты, работаешь с nuxt и не плохо в нем разбираешься, подскажи тогда, имеется ли у него возможность указать директорию назначения билда? Как я понимаю, все настройки у него вынесены в nuxt.config.js и предполагаю где-то там все это конфигурироваться должно. Просто я еще даже не разбирался с этим. У меня в проекте хватает тем для работы. BackServer на PHP в качестве api, клиентская часть на vue. Вот фронтом собираюсь поставить nuxt, так как база то у него все равно vue.
Алексей, вообще, я видел люди делают нечто похожее как у тебя, используя CI. Я просто это не юзаю. Пищи ишью по Nuxt и CI, там сразу билд прилетает. Вероятно надо будет глобально Нукст ставить. Не пробовал.
jeruthadam, нет проект не подразумевает continuous integration, хотя стоило бы. Но посмотрю, все равно могут быть полезные решения! Кстати еще вопрос - есть возможность скрестить сервер на nuxt с pm2, т.е. запускать сервак под управлением pm2? Ему ведь там файл нужно скармливать на вход. У меня он все равно используется в проекте. Я им вообще микросервисы на php запускаю (ну проще говоря демоны).
jeruthadam, слушай, как отметить решением вопроса? :)) я так часто это делаю, что заблудился тут в трех соснах... А походу ни как, нужно было ответом давать, а не комментировать...
Если ты про деплой приложения и чтобы не было задержки во время рекомпила для применения изменении, то используй PM2 с его кластерилизацией, создаешь 5 кластеров, а потом просто pm2 reload [app-name], и он все перезапускает без задержки чтобы ты если проксируешь ноду, а ты ее проксируешь чтобы клиенты не видели 502
Я все смотрел именно здесь: https://github.com/nuxt/nuxt.js/issues/3078
Не совсем именно это интересовало. А сейчас, уже разобрался с проблемой, вызвавшей вопрос. Но к стати, возникли новые.
Первое, возможно ли, и если да, то как настроить nuxt так, что бы при компиляции, клиентские файлы собирались в указанную мной директорию. Это скорее, более эстетический вопрос, нежели функциональный. Т.е. я конечно могу, в настройках nginx, указать корень приложения (сайта) в любой директории, а в конфиге накста прописать publicPath / и все файлы будут оттуда подгружаться. Но хотелось бы по феншую. Вкратце, структура проекта такова, у меня есть директория public, которая является точкой входа (webroot), в ней могут быть другие поддиректории (как раньше например js, css и т.п.) и именно из нее подгружались бы клиентские файлы. Например /dist/app.js соответствовал /project_path/public/dist/app.js А исходники проекта находятся в параллельной директории на одном уровне относительно public. Т.е. папка nuxt рядом с public. И в идеале, хотел, что бы при компиляции файлы из /project_path/nuxt/.nuxt/dist/client попадали в папку /project_path/public/dist. Если указать buildDir в конфиге, то при компиляции, вся папка .nuxt оказывается в обозначенной директории. Как уже сказал, этот вопрос не критичный, просто интересует, настраивается это как-либо в наксте (без выкрутасов с таск-менеджерами)?
И второй вопрос, это подгрузка в dev режиме. В чем суть, грубо говоря, я веду разработку сразу на проде. И сервер приложения находится за nginx'ом. В dev mode, как мы понимаем, физически файлы не создаются, а просто эмулируются в памяти. И как я понимаю, nginx их просто не видит, логично - их же нет! Хоть даже я проксирую все запросы на ноду, все равно скрипты не подгружаются... Как тут быть? Понятное дело, после каждого изменения собирать билд, перезапускать сервер приложения - это геморрой.