1.首先说项目结构:
2.package.json 主要配置
version :版本号, 没次 nppm publish 要修改
private:要改为 false
main:入口文件地址
- 要发布的组件需要 export
主要代码:
`import EgMenu from "./EgMenu.vue";
// 为组件添加 install 方法,用于按需引入
EgMenu.install = function(Vue) {
Vue.component(EgMenu.name, EgMenu);
};
export default EgMenu;`
- 全局的一个index.js 抛出所有组件
// 导入单个组件
import EgButton from "./EgButton/index.js";
import EgCheckbox from "./EgCheckbox/index.js";
import { default as EgMessage } from "./EgMessage";
// 保存 便于遍历 这里只放自定义的插件 (修改时间2019-8-23)
const components = [
EgButton,
EgCheckbox,
];
const install = function(Vue) {
if (install.installed) return;
install.installed = true;
components.map(component => {
Vue.component(component.name, component);
});
Vue.prototype.$EgMessage = EgMessage;
};
// const EgAdapter = {};
// EgAdapter.install = Vue => {
// if (EgAdapter.install.installed) return;
// components.map(component => {
// Vue.component(component.name, component);
// });
// Vue.prototype.$EgMessage = EgMessage;
// };
if (typeof window !== "undefined" && window.Vue) {
install(window.Vue);
}
// if (typeof window !== "undefined" && window.Vue) {
// EgAdapter.install(window.Vue);
// }
// 这里可以用es6的解构语法导入组件 大概就是这个意思 毕竟没有用插件
export {
EgButton,
EgCheckbox,
EgMessage
};
export default {
install
};
- 发布流程
npm login
输入 用户名 密码
npm publish
ok - 使用:
在mainjs 中
import install from “./packages/index.js”; // 也可以单个引入
Vue.use(install);
这样就可以直接使用组件了