vue-plugin-template-test
v1.0.0
Published
A template for creating Vue plugins
Downloads
88
Readme
Vue Plugin Template
A comprehensive template for creating Vue 3 plugins with TypeScript, testing, and development tools pre-configured.
🚀 Features
- ✅ Vue 3 support with TypeScript
- ✅ Local playground for testing your plugin during development
- ✅ Unit testing with Vitest and Vue Test Utils
- ✅ Linting with ESLint and Prettier
- ✅ GitHub Actions CI/CD pipeline
- ✅ Build configuration for npm package publishing
- ✅ Example components and composables
🏁 Getting Started
1. Clone this template
git clone https://github.com/monterail/vue-plugin-template.git
cd vue-plugin-template2. Install dependencies
npm install3. Customize your plugin
Update the following files:
package.json- Change name, description, author, etc.src/index.ts- Rename your plugin and customize functionalitysrc/components/- Add or modify componentssrc/composables/- Add or modify composablesREADME.md- Update documentation for your plugin
4. Start development
# Run the playground for local development
npm run dev
# Or run tests in watch mode
npm run test:watch🛠️ Development
Basic Plugin Structure
// src/index.ts
import type { App, Plugin } from 'vue'
export interface MyPluginOptions {
// Your options here
}
const MyPlugin: Plugin = {
install(app: App, options: MyPluginOptions = {}) {
// Register components
app.component('MyComponent', MyComponent)
// Add global properties
app.config.globalProperties.$myPlugin = {
// Your global methods
}
// Provide data
app.provide('myData', someData)
}
}
export default MyPluginRegistering Components
// Register globally
app.component('MyComponent', MyComponent)
// Register with prefix
const prefix = options.prefix || 'My'
app.component(`${prefix}Component`, MyComponent)Adding Global Properties
app.config.globalProperties.$myPlugin = {
greet: (name: string) => `Hello, ${name}!`
}
// TypeScript types
declare module '@vue/runtime-core' {
export interface ComponentCustomProperties {
$myPlugin: {
greet: (name: string) => string
}
}
}Creating Composables
// src/composables/useMyPlugin.ts
import { ref, computed } from 'vue'
export function useMyPlugin() {
const count = ref(0)
const double = computed(() => count.value * 2)
const increment = () => count.value++
return { count, double, increment }
}🔧 Using Your Published Plugin
Once published, users can install and use your plugin:
npm install your-plugin-name// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import MyPlugin from 'your-plugin-name'
const app = createApp(App)
app.use(MyPlugin, {
// Plugin options
})
app.mount('#app')<!-- Using in components -->
<template>
<MyComponent />
</template>
<script setup>
import { useMyPlugin } from 'your-plugin-name'
const { count, increment } = useMyPlugin()
</script>🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
MIT
🙏 Acknowledgments
Built with:
Happy plugin building! 🎉
If you find this template helpful, please give it a ⭐️ on GitHub!
