@shasoft

Как динамически регистрировать компоненты Vue.component из внешней директории?

Сделал автоматическую регистрацию компонентов по документации и вот этот код работает:
import Vue from "vue";
import kebabCase from 'lodash/kebabCase'
//
Vue.config.productionTip = false
// Подключить и зарегистрировать компоненты из директории .components
const requireComponent = require.context(
  // Относительный путь до каталога компонентов
  './components',
  // Обрабатывать или нет подкаталоги
  true,
  // Регулярное выражение для определения файлов базовых компонентов
  /\w+\.(vue|js)$/
)

requireComponent.keys().forEach(fileName => {
  // Получение конфигурации компонента
  const componentConfig = requireComponent(fileName)

  // Получение имени компонента в PascalCase
  const componentName = kebabCase(
      // Удаление из начала `./` и расширения из имени файла
      fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
  )
  /* eslint-disable no-console */
  console.log('fileName',fileName,'=>',componentName);
  /* eslint-enable no-console */
  // Глобальная регистрация компонента
  Vue.component(
    componentName,
    // Поиск опций компонента в `.default`, который будет существовать,
    // если компонент экспортирован с помощью `export default`,
    // иначе будет использован корневой уровень модуля.
    componentConfig.default || componentConfig
  )
})

Однако если указать директорию './../../app/Modules/Template/vue', Эта директория не работает, то уже не срабатывает. Методом научного тыка выяснил что не нравится коду директория вида ../../, но никак не могу как это можно обойти потому что никак не могу найти что это за ограничение такое.
Может кто-то встречался и знает как это победить?

p.s.мне вообще нужно чтобы компоненты искались в заданных директориях и автоматически регистрировались. Может плагин какой-то для этого есть или настройки?
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
@grinat
Возможно ../../ уже вне папки где node_modules, package.json и т.п. Webpack можно заставить работать с такой конфигурацией, но придется вручную указывать ему все пути, плюс могут быть проблемы со сторонним плагинами и подгрузкой модулей.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы