Компоненты Bootstrap-vue не импортируются при импорте пакета npm из локальной системы - PullRequest
0 голосов
/ 30 октября 2019

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

  • , если я опубликую свой проект (my-navigation) в npmреестра, а затем 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-приложение, импортировав пакет npm. Это кажется плохой идеей (?), Поэтому я, вероятно, не хочу этого в любом случае.

1 Ответ

0 голосов
/ 04 ноября 2019

npm pack создает .tgz файл https://docs.npmjs.com/cli/pack.html

Импорт из этого файла вместо dist выполняется так же, как импорт из пакета в реестре.

Все еще не уверен, почему или что npm делает при создании этого файла, но это отвечает, по крайней мере, на вопрос, как имитировать поведение зарегистрированного пакета при импорте из локального / репозитория.

...