Хорошо, может быть, у этого есть довольно простое объяснение, которое я не знаю, как искать, но вот моя загадка:
- если я опубликую свой проект (
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. Это кажется плохой идеей (?), Так что я, вероятно, все равно этого не хочу.
peerDependencies
наdependencies
.peerDependencies
предполагает, что тот, кто использует вашу библиотеку, установил ее вместо нее. - person Troy Morehouse   schedule 30.10.2019