diff --git a/packages/plugin-vue/src/index.ts b/packages/plugin-vue/src/index.ts
index 28a15996..28280ed7 100644
--- a/packages/plugin-vue/src/index.ts
+++ b/packages/plugin-vue/src/index.ts
@@ -64,6 +64,7 @@ export interface ResolvedOptions extends Options {
   root: string
   sourceMap: boolean
   devServer?: ViteDevServer
+  devToolsEnabled?: boolean
 }
 
 export default function vuePlugin(rawOptions: Options = {}): Plugin {
@@ -97,7 +98,8 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin {
     customElement,
     reactivityTransform,
     root: process.cwd(),
-    sourceMap: true
+    sourceMap: true,
+    devToolsEnabled: process.env.NODE_ENV !== 'production'
   }
 
   // Temporal handling for 2.7 breaking change
@@ -135,7 +137,9 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin {
         ...options,
         root: config.root,
         sourceMap: config.command === 'build' ? !!config.build.sourcemap : true,
-        isProduction: config.isProduction
+        isProduction: config.isProduction,
+        devToolsEnabled:
+          !!config.define!.__VUE_PROD_DEVTOOLS__ || !config.isProduction
       }
     },
 
diff --git a/packages/plugin-vue/src/main.ts b/packages/plugin-vue/src/main.ts
index 7fb26fd3..44b1de74 100644
--- a/packages/plugin-vue/src/main.ts
+++ b/packages/plugin-vue/src/main.ts
@@ -27,7 +27,7 @@ export async function transformMain(
   ssr: boolean,
   asCustomElement: boolean
 ) {
-  const { devServer, isProduction } = options
+  const { devServer, isProduction, devToolsEnabled } = options
 
   // prev descriptor is only set and used for hmr
   const prevDescriptor = getPrevDescriptor(filename)
@@ -102,9 +102,12 @@ export async function transformMain(
   if (hasScoped) {
     attachedProps.push([`__scopeId`, JSON.stringify(`data-v-${descriptor.id}`)])
   }
-  if (devServer && !isProduction) {
+  if (devToolsEnabled || (devServer && !isProduction)) {
     // expose filename during serve for devtools to pickup
-    attachedProps.push([`__file`, JSON.stringify(filename)])
+    attachedProps.push([
+      `__file`,
+      JSON.stringify(isProduction ? path.basename(filename) : filename)
+    ])
   }
 
   // HMR