#javascript #vue.js #vue-component #custom-component #vue-cli-3
#javascript #vue.js #vue-component #пользовательский компонент #vue-cli-3
Вопрос:
Я создаю свою внешнюю библиотеку компонентов vue и публикую в npm. Мои компоненты расширяют компоненты пользовательского интерфейса элемента.
Я следовал инструкциям в этой статье, и пока все работает нормально. https://medium.com/justfrontendthings/how-to-create-and-publish-your-own-vuejs-component-library-on-npm-using-vue-cli-28e60943eed3
пакет npm
https://www.npmjs.com/package/@bochen/example-lib
сценарий связки
"build-bundle": "vue-cli-service build --target lib --name exampleLib ./src/components/index.js",
src/components/index.js
import Vue from 'vue';
import BcButton from './Button.vue';
const Components = {
BcButton,
};
Object.keys(Components).forEach((name) => {
Vue.component(name, Components[name]);
});
export default Components;
src/components/Button.vue
<template>
<el-button v-bind="$props"
:class="{
'button-full': full,
}"
>
<slot/>
</el-button>
</template>
<script>
import { Button } from 'element-ui';
export default {
name: 'BcButton',
extends: Button,
props: {
full: {
type: Boolean,
default: false,
},
},
};
</script>
<style scoped>
.button-full {
width: 100%;
}
</style>
Проблема
Проблема в том, что после того, как я установил свою библиотеку в другом проекте, мне все еще нужно дополнительно импортировать Element UI
, чтобы заставить ее работать.
main.js
import Vue from 'vue'
import App from './App.vue'
import Element from 'element-ui';
import ExampleLib from '@bochen/example-lib';
import 'element-ui/lib/theme-chalk/index.css';
import '@bochen/example-lib/dist/exampleLib.css';
Vue.use(Element);
Object.keys(ExampleLib).forEach((name) => {
Vue.component(name, ExampleLib[name]);
});
Vue.config.productionTip = false
new Vue({
render: h => h(App),
}).$mount('#app')
Возможно ли, чтобы я мог просто импортировать свою библиотеку и работать так, как я ожидал?
Комментарии:
1. Добились ли вы какого-либо успеха? Я также использую аналогичный подход с ant vue design, он работает во время разработки, но после связки он не работает в другом проекте
2. Я думаю, вы могли бы просто добавить элемент UI в свою библиотеку в
src/components/index.js
файле