Skip to content

Commit

Permalink
feat: option to disable vueDevTools
Browse files Browse the repository at this point in the history
  • Loading branch information
antfu committed Feb 16, 2025
1 parent 684897f commit 3e5251c
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 18 deletions.
5 changes: 5 additions & 0 deletions packages/devtools-kit/src/_types/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ export interface ModuleOptions {
*/
componentInspector?: boolean | VitePluginInspectorOptions

/**
* Enable Vue DevTools integration
*/
vueDevTools?: boolean

/**
* Enable vite-plugin-inspect
*
Expand Down
3 changes: 0 additions & 3 deletions packages/devtools/client/app.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { splitScreenAvailable, splitScreenEnabled } from '~/composables/storage'
import { useSchemaInput } from './composables/state-schema'
import { useDevToolsOptions } from './composables/storage-options'
import { setupClientRPC } from './setup/client-rpc'
import { setupVueDevTools } from './setup/vue-devtools'
import 'floating-vue/dist/style.css'
import '@vue/devtools-applet/style.css'
Expand All @@ -39,8 +38,6 @@ useHead({
},
],
})
setupVueDevTools()
setupClientRPC()
const client = useClient()
Expand Down
11 changes: 6 additions & 5 deletions packages/devtools/client/pages/modules/pinia.vue
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
<script setup lang="ts">
import { definePageMeta } from '#imports'
import { Pinia } from '@vue/devtools-applet'
import { useDevToolsState as useVueDevToolsState } from '@vue/devtools-core'
import { useServerConfig } from '~/composables/state'
const { connected } = useVueDevToolsState()
import { useModuleOptions, useServerConfig } from '~/composables/state'
import { useVueDevToolsState } from '~/setup/vue-devtools'
definePageMeta({
icon: 'i-logos-pinia',
Expand All @@ -13,9 +11,12 @@ definePageMeta({
category: 'vue-devtools',
show() {
const configs = useServerConfig()
return () => configs.value?.modules?.some(item => (item as string | Array<unknown>)?.includes('@pinia/nuxt'))
const options = useModuleOptions()
return () => options.value?.vueDevTools !== false && configs.value?.modules?.some(item => (item as string | Array<unknown>)?.includes('@pinia/nuxt'))
},
})
const { connected } = useVueDevToolsState()
</script>

<template>
Expand Down
14 changes: 8 additions & 6 deletions packages/devtools/client/pages/modules/render-tree.vue
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
<script setup lang="ts">
import { definePageMeta } from '#imports'
import { Components as VueComponents } from '@vue/devtools-applet'
import { useDevToolsState as useVueDevToolsState } from '@vue/devtools-core'
import { useClient } from '~/composables/client'
import { useOpenInEditor } from '~/composables/editor'
const { connected } = useVueDevToolsState()
const client = useClient()
const openInEditor = useOpenInEditor()
import { useModuleOptions } from '~/composables/state'
import { useVueDevToolsState } from '~/setup/vue-devtools'
definePageMeta({
icon: 'i-carbon-category',
title: 'Render Tree',
layout: 'full',
show: () => {
const client = useClient()
return () => !!client.value
const options = useModuleOptions()
return () => options.value?.vueDevTools !== false && !!client.value
},
order: 1,
category: 'vue-devtools',
})
const { connected } = useVueDevToolsState()
const client = useClient()
const openInEditor = useOpenInEditor()
function togglePanel(status: boolean) {
if (status)
client.value.devtools.open()
Expand Down
16 changes: 13 additions & 3 deletions packages/devtools/client/setup/vue-devtools.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
import { functions, onRpcConnected, rpc, useDevToolsState as useVueDevToolsState } from '@vue/devtools-core'
import { functions, onRpcConnected, rpc, useDevToolsState } from '@vue/devtools-core'
import { createRpcClient } from '@vue/devtools-kit'
import { watchEffect } from 'vue'
import { useDevToolsFrameState } from '../composables/storage'

export function setupVueDevTools() {
const { connected } = useVueDevToolsState()
let initiated = false

export function useVueDevToolsState() {
ensureVueDevTools()
return useDevToolsState()
}

export function ensureVueDevTools() {
if (initiated)
return
initiated = true
const { connected } = useDevToolsState()

const state = useDevToolsFrameState()

Expand Down
3 changes: 2 additions & 1 deletion packages/devtools/src/module-main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,8 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()

await import('./integrations/plugin-metrics').then(({ setup }) => setup(ctx))

await import('./integrations/vue-devtools').then(({ setup }) => setup(ctx))
if (options.vueDevTools !== false)
await import('./integrations/vue-devtools').then(({ setup }) => setup(ctx))

if (options.viteInspect !== false)
await import('./integrations/vite-inspect').then(({ setup }) => setup(ctx))
Expand Down

0 comments on commit 3e5251c

Please sign in to comment.