从本地导入npm软件包时未导入Bootstrap-vue组件

时间:2019-10-29 21:25:56

标签: vue.js npm bootstrap-vue

好的,也许这有一个非常简单的解释,我不知道如何查找,但这是我的难题:

  • 如果我将项目(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组件正在全局注册,然后可以通过导入npm包在my-vue-app中使用。这似乎是个坏主意(?),所以我可能还是不想这么做。

1 个答案:

答案 0 :(得分:0)

npm pack产生一个.tgz文件https://docs.npmjs.com/cli/pack.html

从此文件而不是从dist导入与从注册表中的程序包导入具有相同的行为。

仍不确定npm创建此文件的原因或作用,但这至少回答了从本地/存储库导入时如何模仿已注册软件包的行为的问题。