The New Default. Your hub for building smart, fast, and sustainable AI software

See now
Abstract, minimalist illustration of vue plugins.

Easy way to Build and publish Vue plugins: Vue Plugin Template

Jakub Andrzejewski
|   Jan 27, 2026

If you’ve built more than one Vue plugin, you probably noticed a pattern: you keep solving the same boring problems over and over again. Project structure, build config, TypeScript setup, docs, npm publishing, examples… none of this is hard, but all of it steals time from the actual idea you want to ship.

That’s exactly the pain that led to vue-plugin-template.

Repo: https://github.com/monterail/vue-plugin-template

This article explains why this template exists, how it relates to our Vue Plugins initiative, and how it fits into the official Vue approach to local plugins and extensions.

Why do you need a template for Vue plugins?

Vue already has great documentation on plugins. You can read how to create a local plugin directly in the official docs, usually starting with something like:

export default {
  install(app) {
    app.config.globalProperties.$myPlugin = () => {}
  }
}

This is perfect when:

  • You’re experimenting

  • You’re building something app-specific

  • You don’t plan to publish it

But once you want to:

  • publish to npm

  • support TypeScript properly

  • ship ESM + CJS

  • provide examples and docs

  • keep the API stable

…you’re suddenly far outside the scope of the docs.

That gap is where vue-plugin-template lives.

What vue-plugin-template actually is

vue-plugin-template is an opinionated but flexible template for:

  • building Vue 3 plugins

  • documenting them

  • testing them locally

  • publishing them to npm

It gives you a production-ready starting point without locking you into a specific plugin idea. Out of the box, you get:

  • Vue 3 plugin structure

  • TypeScript-first setup

  • Vite-based build

  • Proper exports for npm

  • Example app for local testing

  • README structure that doesn’t start empty

All the boring parts are already solved.

How vue-plugin-template fits into the Vue Plugins directory

This template is not a random side project. It is the foundation for Vue Plugins, our platform where you can find and discover the best Vue.js plugins.

Every new plugin in https://github.com/monterail/vue-plugins can:

  • start from the same base

  • share the same tooling

  • follow the same publishing rules

That consistency makes maintenance easier and contributions less scary. If you’ve seen one plugin, you’ve basically seen them all.

Vue plugin npm publishing without pain

We wanted to remove friction from publishing Vue plugins.

The template is set up so that:

  • builds produce correct output formats

  • package exports are explicit

  • consumers get proper typings

You don’t need to Google “Vue plugin npm ESM CJS TypeScript” ever again.

You just:

npm publish

Why should you use an opinionated template?

Yes, this template makes some choices for you.

That’s intentional.

Templates that try to support every possible approach usually end up helping no one. vue-plugin-template reflects:

  • real production usage

  • lessons learned from multiple plugins

  • alignment with Vue’s official APIs

If you don’t like the choices we’ve made, it’s still just a template. Fork it, tweak it, own it!

Whom is vue-plugin-template for?

This template is a good fit if you:

  • plan to publish a Vue plugin

  • care about clean DX

  • want to avoid setup fatigue

  • like learning from existing, battle-tested patterns

If you’re just hacking something inside a single app, Vue’s local plugin docs are still the best starting point.

Final thoughts

vue-plugin-template exists to make the right thing the easy thing.

It connects three worlds:

  • Vue’s official plugin model

  • real-world npm distribution

  • the Vue Plugins ecosystem

If it saves you even one afternoon of setup work, then our mission has been accomplished.

Feel free to use it, fork it, or improve it. That’s exactly why it exists.

Jakub Andrzejewski
Jakub Andrzejewski
Senior Frontend Developer at Monterail
Jakub Andrzejewski is a skilled Vue and Node.js developer with a strong focus on Web Performance optimization. As an active contributor to the Vue and Nuxt communities, Jakub creates Open-Source Software, shares insights through technical articles, and delivers engaging talks at technology conferences around the globe.