Skip to content

Instantly share code, notes, and snippets.

@webfansplz
Last active January 1, 2024 12:32
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save webfansplz/bc90a773a0dd474a34e043ab2d2a37a4 to your computer and use it in GitHub Desktop.
Save webfansplz/bc90a773a0dd474a34e043ab2d2a37a4 to your computer and use it in GitHub Desktop.
Introducing Vue DevTools (Vite Plugin)

Introduction:

In recent years, there has been an increasing focus on improving the developer experience (DX). Tools and frameworks have been striving to enhance it. I believe everyone already knows Vite, a tool that has gained significant popularity in the frontend build tooling in recent years. It's fast, but that's not its only advantage.Vite's ecosystem has seen rapid growth due to its user-friendly and highly extensible plugin design mechanism.This allows developers to quickly integrate Vite into their tools and frameworks. Anthony Fu opensourced the Nuxt DevTools on Vue Amsterdam 2023,a new tool to help you understand your Nuxt app and improve the developer experience even further. It deeply moved and inspired me, why can't Vue have a similarly cool tool? We all know that there is an official Vue Devtools browser extension, but can we create a Vue Devtools that is bound to Vite and integrates with the existing Vite ecosystem to enhance its capabilities while retaining the original features of Vue Devtools?Additionally, by exposing configurations and capabilities, users can customize and extend functionalities for greater flexibility. Building upon these ideas, vite-plugin-vue-devtools is out, Let's take a look at what it has to offer!

Introducing Vue DevTools

Pages

The pages tab shows your current routes and provide a quick way to navigate to them. For dynamic routes, it also provide a form to fill with each params interactively. You can also use the textbox to play and test how each route is matched.

Components

Components tab show all the components you are using in your app and hierarchy. You can also select them to see the details of the component (e.g. data,props).

Assets

Assets tab that shows all your static assets (vite config.publicDir only now) and their information. You can open the asset in the browser or download it.

Timeline

Timeline tab has three categories: Performance, Router Navigations, and Pinia. You can switch between them to see the state changes and timelines.

Routes

Routes tab is a feature integrated with Vue Router, allowing you to view the registered routes and their details.

Pinia

Pinia tab is a feature integrated with Pinia, allowing you to view the registered modules and their details.

Graph

Graph tab provides a graph view that show the relationship between components.

Inspect

Inspect expose the vite-plugin-inspect integration, allowing you to inspect transformation steps of Vite. It can be helpful to understand how each plugin is transforming your code and spot potential issues.

Inspector

You can also use the "Inspector" feature to inspect the DOM tree and see which component is rendering it. Click to go to your editor of the specific line. Making it much easier to make changes, without the requirement of understanding the project structure thoroughly. (This feature is implemented based on the vite-plugin-vue-inspector)

Vue DevTools Usage

Installation

# vite-plugin-vue-devtools 

npm install vite-plugin-vue-devtools -D

Usage

import { defineConfig } from 'vite'
import VueDevtools from 'vite-plugin-vue-devtools'

export default defineConfig({
  plugins: [
    VueDevtools(),
    vue(),
  ],
})

Notice

  • Only available in development mode.

  • Only support Vue3.0+.

  • Currently only supports single-instance Vue applications (multi-instance support is coming soon).

  • Doesn't support SSR (If you're using Nuxt, use nuxt/devtools directly).

  • The plugin follows Vue's devtools configuration, so if you have configured the hide option, it will also be applied in this plugin. e.g.

    // This Vue instance will be ignored by the plugin.
    createApp({
      render: () => h(App),
      devtools: {
        hide: true,
      },
    })

Credits

Conclusion

The plugin is currently in the Early Preview, and any ideas or bug feedback are welcome. If it has been helpful to you, please give it a star, thanks!

@Loongphy
Copy link

Loongphy commented May 9, 2023

🎉

@shiv122
Copy link

shiv122 commented Oct 4, 2023

Thanks for this gift ❤️ .

@mehtab-riaz
Copy link

🎉 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment