Компоненты Bootstrap-vue не импортируются при импорте пакета npm из локального

Хорошо, может быть, у этого есть довольно простое объяснение, которое я не знаю, как искать, но вот моя загадка:

  • если я опубликую свой проект (my-navigation) в реестре npm, а затем установлю его в другом проекте (my-vue-app), все будет отлично, но!
  • если я попытаюсь npm install my-navigation прямо из папки на моем компьютере в my-vue-app, я начну получать ошибки времени выполнения, указывающие на то, что я неправильно зарегистрировал некоторые компоненты bootstrap-vue
  • Я даже попытался скопировать файлы из node_modules/my-navigation в папку, а затем установить это npm - я получаю те же ошибки

Это моя основная точка входа:

import Vue from "vue";
import MyNavigation from "./MyNav.vue";

import {
  BNavbar,
  BNavbarBrand,
  BNavbarNav,
  BDropdownForm
 } from "bootstrap-vue";

Vue.component("b-navbar", BNavbar);
Vue.component("b-navbar-brand", BNavbarBrand);
Vue.component("b-navbar-nav", BNavbarNav);
Vue.component("b-dropdown-form", BDropdownForm);
Vue.component("b-form-radio", BFormRadio);

import "./styles/bootstrap/mystyles.scss";

export default {
  install(Vue) {
      Vue.component('my-navigation', MyNavigation);
  },
};

export { MyNavigation };

и в package.json:

  "main": "./dist/my-navigation.umd.js",
  "module": "./dist/my-navigation.esm.js",
  "unpkg": "./dist/my-navigation.min.js",

  "files": [
    "dist/*"
  ],
  "dependencies": {
    "core-js": "^3.3.2",
    "vue": "^2.6.10"
  },
  "peerDependencies": {
    "bootstrap-vue": "^2.0.4"
  },
  "scripts": {
    "build-bundle": "vue-cli-service build --target lib --name my-navigation ./src/main-navbar.js"
  },

Я, конечно, могу обойти это, импортировав компоненты непосредственно в MyNavigation.vue, но я хочу зарегистрировать их глобально для использования в другом компоненте, который я также включу в пакет npm; и мне кажется странным, что он работает через реестр, но не локально

Изменить: похоже, что через реестр компоненты bootstrap-vue регистрируются глобально и затем доступны в my-vue-app путем импорта пакета npm. Это кажется плохой идеей (?), Так что я, вероятно, все равно этого не хочу.


person Doug Judy    schedule 29.10.2019    source источник
comment
Попробуйте переместить bootstrap-vue с peerDependencies на dependencies. peerDependencies предполагает, что тот, кто использует вашу библиотеку, установил ее вместо нее.   -  person Troy Morehouse    schedule 30.10.2019
comment
@TroyMorehouse Я пробовал это (и в моем проекте также установлен bootstrap-vue)   -  person Doug Judy    schedule 30.10.2019


Ответы (1)