A Pubsub Plugin (or better Event Bus) for Vue, inspired in mitt
npm i vue-pubsub
import { createApp } from "vue"; import { PubsubPlugin } from "vue-pubsub"; import App from "./App.vue"; const app = createApp(App); app.use(PubsubPlugin()); app.mount("#app"); // ... <script setup> import { usePubsub } from "vue-pubsub"; const pubsub = usePubsub(); pubsub.on("test", (data) => { console.log(data); }); </script> // in other .vue file / setup hook pubsub.to("test", "Hello World!");
You can declare custom channel types by:
declare module "vue-pubsub" { interface Channels { test: string; } }
Vue inject() and provide() do not support generic types in same context. Better suggestions for this are welcome.