@elrevin

Как организовать доступ к vue-компонентам из других компонентов?

Добрый день, коллеги.
Подскажите пожалуйста как быть в такой ситуации:
есть приложение на php (движок для сайта), у него есть разные модули (разное количество для разных сайтов), и есть модуль админки, который строит основной интерфейс админки и имеет кучу компонентов vue для этого (кнопки, дата-гриды и пр.). Но каждый модуль имеет свой компонент, который строит интерфейс для редактирования данных модуля. Примерно структура выглядит так:
admin-module
      vue
          Приложение админки с базовыми компонентами
some-module
      vue
          Компонент для редактирования данных


Компоненты модулей я собираю в web-компоненты vue командой vue-cli-service build --target wc --name some-module-editor ./src/SomeModuleEditor.vue
После сборки этот компонент можно использовать в админке подгружая динамически его сборку и подменяя значение is у тега в нужном месте.
Но есть одна загвоздка: в компоненте SomeModuleEditor.vue из нельзя использовать базовые компоненты из админки (те самые кнопки, дата-гриды и пр.), при попытке собрать компонент я получаю ошибку:
Module build failed (from ./node_modules/eslint-loader/index.js):
Error: No ESLint configuration found.

если я добавлю в SomeModuleEditor.vue такое:

import InDefaultButton from "../../../vuecp/assets/vue/src/componets/buttons/InDefaultButton";
    export default {
        components: {InDefaultButton}
    }


Сделать одно приложение для админки и тупо его собрать не вариант, так как модули устанавливаются путем простого копирования папки с модулем. И админка про модули не знает ничего (на прямую к ним не обращается, ничего не инклудит и не использует), а модули про админку знают и по идее могут использовать компоненты.

Заранее огромное спасибо за советы.
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ответы на вопрос 1
Per_Ardua
@Per_Ardua
Frontend developer
Есть минимум два варианта:
1. Используйте для сборки не vue-cli, либо модернизируйте конфиг так, чтобы сборка не пыталась подключить eslint-loader, которого там нет, а брала его из мест, где он есть.
2. Сделайте пакет для vue компонентов из админки, запаблишите и юзайте. Или не паблишите, а просто прилинкуйте, если на это стоит запрет.
Скорее всего есть ещё варианты)

P.S. Какой-то поздний ответ =)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы