Для публикации Vue-приложения, собранного командой `npm run dev`, на сайте под управлением Joomla, необходимо понимать разницу между режимами разработки и production. Команда `npm run dev` обычно запускает сервер для разработки с "живой" перезагрузкой и не предназначена для финальной публикации на production-сервере (Debian) .
Вместо этого вам нужно собрать оптимизированную production-версию вашего приложения и правильно интегрировать её в Joomla. Вот пошаговая инструкция для публикации приложения Vue:
Шаг 1. Подготовка production-сборки Vue
На вашей локальной машине или непосредственно на сервере в директории с проектом Vue выполните команду для сборки production-версии. Обычно это:
npm run build
Эта команда создаст папку dist (или аналогичную, в зависимости от настроек), содержащую оптимизированные файлы: index.html, JavaScript и CSS файлы. В отличие от компиляции в режиме dev, здесь не будет сервера с горячей заменой модулей, а код будет минифицирован для максимальной производительности.
Шаг 2. Интеграция собранных файлов в Joomla
Существует несколько способов интеграции Vue-приложения в Joomla. Самый надежный — разместить его как отдельный компонент или плагин, либо внедрить в существующий шаблон.
Через шаблон Joomla:
1. Скопируйте содержимое папки dist (файлы .js, .css и возможно index.html) в директорию вашего шаблона Joomla, например: /templates/ваш_шаблон/js/ и /templates/ваш_шаблон/css/.
2. Подключите ваши скрипты и стили. В файле index.php вашего шаблона добавьте:
// Подключение CSS
use Joomla\CMS\Factory;
$doc = Factory::getDocument();
$doc->addStyleSheet($this->baseurl . '/templates/ваш_шаблон/css/имя_вашего_файла.css');
// Подключение JS (желательно перед закрывающим тегом body)
$doc->addScript($this->baseurl . '/templates/ваш_шаблон/js/имя_вашего_файла.js');
3. В том месте шаблона, где должно быть ваше Vue-приложение, добавьте HTML-элемент, который Vue использует как точку монтирования (обычно это `< div id="app">< /div>`).
Через создание пользовательского HTML-модуля:
1. Загрузите содержимое папки dist на сервер в любую доступную директорию, например /media/com_vueapp/.
2. В панели администратора Joomla создайте новый модуль типа "Пользовательский HTML".
3. В поле "Содержимое" модуля вставьте точку монтирования: < div id="app">< /div>.
4. В настройках модуля, на вкладке "Дополнительные настройки", в поле "Пользовательный вывод" или аналогичном, добавьте теги < script> и < link> для подключения ваших CSS и JS файлов из /media/com_vueapp/.
5. Опубликуйте модуль в нужной позиции на сайте.
Шаг 3. Управление маршрутизацией (важно!)
Vue-приложения часто используют режим истории history для "красивых" URL (без `#`). Если ваше приложение использует этот режим, при прямом переходе по любому URL, кроме главной страницы Joomla, сервер Debian будет возвращать ошибку 404, так как не знает, что запрос нужно перенаправить на ваше Vue-приложение.
Решение: используйте режим `hash` в Vue Router (`createWebHashHistory()`). В этом случае URL будут содержать символ `#`, и Vue-роутер будет работать всегда, так как часть после `#` не отправляется на сервер.
Альтернатива (сложная): настроить веб-сервер (Apache/Nginx) на перенаправление всех запросов к определенному пути на ваш `index.html`. Это может конфликтовать с роутингом Joomla и требует глубокого понимания конфигурации сервера.