Awesome
<p align="center"> <a href="https://github.com/webfansplz/vite-plugin-vue-inspector"><img src="./logo.svg" width="180" alt="vite-plugin-vue-inspector"></a> </p> <p align="center"> <a href="https://www.npmjs.com/package/vite-plugin-vue-inspector" target="_blank" rel="noopener noreferrer"><img src="https://badgen.net/npm/v/vite-plugin-vue-inspector" alt="NPM Version" /></a> <a href="https://www.npmjs.com/package/vite-plugin-vue-inspector" target="_blank" rel="noopener noreferrer"><img src="https://badgen.net/npm/dt/vite-plugin-vue-inspector" alt="NPM Downloads" /></a> <a href="https://github.com/webfansplz/vite-plugin-vue-inspector/blob/master/LICENSE" target="_blank" rel="noopener noreferrer"><img src="https://badgen.net/github/license/webfansplz/vite-plugin-vue-inspector" alt="License" /></a> </p> <p align="center"> <a href="https://stackblitz.com/edit/vitejs-vite-rbr2as?file=src%2FApp.vue"><img src="https://developer.stackblitz.com/img/open_in_stackblitz.svg" alt=""></a> </p>๐ Introduction
A vite plugin which provides the ability that to jump to the local IDE when you click the element of browser automatically. It supports Vue2 & 3 & SSR.
<p align="center"> <img src="./public/preview.gif" alt="vite-plugin-vue-inspector"> </p>๐ฆ Installation
# vite-plugin-vue-inspector
pnpm install vite-plugin-vue-inspector -D
# unplugin-vue-inspector
pnpm install unplugin-vue-inspector -D
๐ฆ Usage
Configuration Vite
// for Vue2
import { defineConfig, } from 'vite'
import { createVuePlugin, } from 'vite-plugin-vue2'
import Inspector from 'unplugin-vue-inspector/vite' // OR vite-plugin-vue-inspector
export default defineConfig({
plugins: [
createVuePlugin(),
Inspector({
vue: 2
}),
],
})
// for Vue3
import { defineConfig } from 'vite'
import Vue from '@vitejs/plugin-vue'
import Inspector from 'unplugin-vue-inspector/vite' // OR vite-plugin-vue-inspector
export default defineConfig({
plugins: [Vue(), Inspector()],
})
// for Nuxt3
// nuxt.config.ts
import { defineNuxtConfig } from 'nuxt/config'
import Inspector from 'vite-plugin-vue-inspector'
export default defineNuxtConfig({
modules: [
['unplugin-vue-inspector/nuxt', {
enabled: true,
toggleButtonVisibility: 'always',
}],
],
})
Options
interface VitePluginInspectorOptions {
/**
* Vue version
* @default 3
*/
vue?: 2 | 3
/**
* Default enable state
* @default false
*/
enabled?: boolean
/**
* Define a combo key to toggle inspector
* @default 'control-shift' on windows, 'meta-shift' on other os
*
* any number of modifiers `control` `shift` `alt` `meta` followed by zero or one regular key, separated by -
* examples: control-shift, control-o, control-alt-s meta-x control-meta
* Some keys have native behavior (e.g. alt-s opens history menu on firefox).
* To avoid conflicts or accidentally typing into inputs, modifier only combinations are recommended.
* You can also disable it by setting `false`.
*/
toggleComboKey?: string | false
/**
* Toggle button visibility
* @default 'active'
*/
toggleButtonVisibility?: 'always' | 'active' | 'never'
/**
* Toggle button display position
* @default top-right
*/
toggleButtonPos?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'
/**
* append an import to the module id ending with `appendTo` instead of adding a script into body
* useful for frameworks that do not support transformIndexHtml hook (e.g. Nuxt3)
*
* WARNING: only set this if you know exactly what it does.
*/
appendTo?: string | RegExp
/**
* Customize openInEditor host (e.g. http://localhost:3000)
* @default false
* @deprecated This option is deprecated and removed in 5.0. The plugin now automatically detects the correct host.
*/
openInEditorHost?: string | false
/**
* lazy load inspector times (ms)
* @default false
*/
lazyLoad?: number | false
/**
* disable inspector on editor open
* @default false
*/
disableInspectorOnEditorOpen?: boolean
/**
* Hide information in VNode and produce clean html in DevTools
*
* Currently, it only works for Vue 3
*
* @default true
*/
cleanHtml?: boolean
/**
* Target editor when open in editor (v5.1.0+)
*
* @default code (Visual Studio Code)
*/
launchEditor?: 'appcode' | 'atom' | 'atom-beta' | 'brackets' | 'clion' | 'code' | 'code-insiders' | 'codium' | 'emacs' | 'idea' | 'notepad++' | 'pycharm' | 'phpstorm' | 'rubymine' | 'sublime' | 'vim' | 'visualstudio' | 'webstorm'
}
Example
Supported editors
Value | Editor | Linux | Windows | OSX |
---|---|---|---|---|
appcode | AppCode | โ | ||
atom | Atom | โ | โ | โ |
atom-beta | Atom Beta | โ | ||
brackets | Brackets | โ | โ | โ |
clion | Clion | โ | โ | |
code | Visual Studio Code | โ | โ | โ |
code-insiders | Visual Studio Code Insiders | โ | โ | โ |
codium | VSCodium | โ | โ | โ |
emacs | Emacs | โ | ||
idea | IDEA | โ | โ | โ |
notepad++ | Notepad++ | โ | ||
pycharm | PyCharm | โ | โ | โ |
phpstorm | PhpStorm | โ | โ | โ |
rubymine | RubyMine | โ | โ | โ |
sublime | Sublime Text | โ | โ | โ |
vim | Vim | โ | ||
visualstudio | Visual Studio | โ | ||
webstorm | WebStorm | โ | โ | โ |
๐ Configuration IDE / Editor
Starting from v5.1.0, We recommend using the launchEditor
option configuration to specify the IDE (Please ensure that the editor's environment variables are correctly configured beforehand.)
It uses an environment variable named LAUNCH_EDITOR
to specify an IDE application, but if you do not set this variable, it will try to open a common IDE that you have open or installed once it is certified.
For example, if you want it always open VS Code when inspection clicked, set export LAUNCH_EDITOR=code
in your shell.
VS Code
-
install VS Code command line tools, see the official docs
-
set env to shell, like
.bashrc
or.zshrc
export LAUNCH_EDITOR=code
VS Code with WSL (Windows)
-
add the configuration in the
settings.json
-
restart the VS Code (All Windows should be closed to take effect)
{
// other config...
"terminal.integrated.env.linux": {
"EDITOR": "code"
}
}
WebStorm
-
just set env with an absolute path to shell, like
.bashrc
or.zshrc
(only MacOS)export LAUNCH_EDITOR='/Applications/WebStorm.app/Contents/MacOS/webstorm'
OR
-
install WebStorm command line tools
-
then set env to shell, like
.bashrc
or.zshrc
export LAUNCH_EDITOR=webstorm
PhpStorm
-
just set env with an absolute path to shell, like
.bashrc
or.zshrc
(only MacOS)export LAUNCH_EDITOR='/Applications/PhpStorm.app/Contents/MacOS/phpstorm'
OR
-
install PhpStorm command line tools
-
then set env to shell, like
.bashrc
or.zshrc
export LAUNCH_EDITOR=phpstorm
Vim
Yes! you can also use vim if you want, just set env to shell
export LAUNCH_EDITOR=vim
<br />
๐ก Notice
- [BREAKING CHANGE] From v1.0,
enabled
option default value changed fromtrue
tofalse
. - It only work in develop mode .
- It does not currently support
Template Engine (e.g. pug)
.
๐จโ๐ป Programmatic Usage
You can also use control inspector programmatically, by accessing the __VUE_INSPECTOR__
global variable.
import type { VueInspectorClient } from 'vite-plugin-vue-inspector'
const inspector: VueInspectorClient = window.__VUE_INSPECTOR__
if (inspector) {
// enable inspector
inspector.enable()
// or
inspector.disable()
}
๐ธ Credits
This project is inspired by react-dev-inspector .
Partially implementation is inspired by vite-plugin-svelte-inspector .
๐ค๏ธ Analysis of Theory
[Chinese] ็นๅป้กต้ขๅ ็ด ,่ฟไธชViteๆไปถๅธฎๆๆๅผไบVue็ปไปถ