From de18693125ae200d39054ed64980ab33876f8824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Thu, 5 Jun 2025 13:50:26 +0900 Subject: [PATCH 1/4] fix: template src sourcemap source (#267) --- packages/plugin-vue/src/index.ts | 1 + packages/plugin-vue/src/script.ts | 7 ++++++- packages/plugin-vue/src/template.ts | 10 +++++++--- playground/vue-sourcemap/Main.vue | 2 ++ .../__snapshots__/vue-sourcemap.spec.ts.snap | 14 ++++++++++++++ .../vue-sourcemap/__tests__/vue-sourcemap.spec.ts | 12 ++++++++++++ .../src-import-html/SrcImportHtml.vue | 5 +++++ .../vue-sourcemap/src-import-html/src-import.html | 1 + 8 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 playground/vue-sourcemap/src-import-html/SrcImportHtml.vue create mode 100644 playground/vue-sourcemap/src-import-html/src-import.html diff --git a/packages/plugin-vue/src/index.ts b/packages/plugin-vue/src/index.ts index e4e0b4ee..8621cfe7 100644 --- a/packages/plugin-vue/src/index.ts +++ b/packages/plugin-vue/src/index.ts @@ -490,6 +490,7 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin { if (query.type === 'template') { return transformTemplateAsModule( code, + filename, descriptor, options.value, this, diff --git a/packages/plugin-vue/src/script.ts b/packages/plugin-vue/src/script.ts index 899612d9..2f63f770 100644 --- a/packages/plugin-vue/src/script.ts +++ b/packages/plugin-vue/src/script.ts @@ -74,7 +74,12 @@ export function resolveScript( id: descriptor.id, isProd: options.isProduction, inlineTemplate: isUseInlineTemplate(descriptor, options), - templateOptions: resolveTemplateCompilerOptions(descriptor, options, ssr), + templateOptions: resolveTemplateCompilerOptions( + descriptor, + options, + descriptor.filename, + ssr, + ), sourceMap: options.sourceMap, genDefaultAs: canInlineMain(descriptor, options) ? scriptIdentifier diff --git a/packages/plugin-vue/src/template.ts b/packages/plugin-vue/src/template.ts index 8d8f3ba1..f9e2eddf 100644 --- a/packages/plugin-vue/src/template.ts +++ b/packages/plugin-vue/src/template.ts @@ -13,6 +13,7 @@ import type { ResolvedOptions } from './index' export async function transformTemplateAsModule( code: string, + filename: string, descriptor: SFCDescriptor, options: ResolvedOptions, pluginContext: Rollup.TransformPluginContext, @@ -24,6 +25,7 @@ export async function transformTemplateAsModule( }> { const result = compile( code, + filename, descriptor, options, pluginContext, @@ -62,6 +64,7 @@ export function transformTemplateInMain( ): SFCTemplateCompileResults { const result = compile( code, + descriptor.filename, descriptor, options, pluginContext, @@ -80,16 +83,16 @@ export function transformTemplateInMain( // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export function compile( code: string, + filename: string, descriptor: SFCDescriptor, options: ResolvedOptions, pluginContext: Rollup.PluginContext, ssr: boolean, customElement: boolean, ) { - const filename = descriptor.filename resolveScript(descriptor, options, ssr, customElement) const result = options.compiler.compileTemplate({ - ...resolveTemplateCompilerOptions(descriptor, options, ssr)!, + ...resolveTemplateCompilerOptions(descriptor, options, filename, ssr)!, source: code, }) @@ -118,6 +121,7 @@ export function compile( export function resolveTemplateCompilerOptions( descriptor: SFCDescriptor, options: ResolvedOptions, + filename: string, ssr: boolean, ): Omit | undefined { const block = descriptor.template @@ -126,7 +130,7 @@ export function resolveTemplateCompilerOptions( } const resolvedScript = getResolvedScript(descriptor, ssr) const hasScoped = descriptor.styles.some((s) => s.scoped) - const { id, filename, cssVars } = descriptor + const { id, cssVars } = descriptor let transformAssetUrls = options.template?.transformAssetUrls // compiler-sfc should export `AssetURLOptions` diff --git a/playground/vue-sourcemap/Main.vue b/playground/vue-sourcemap/Main.vue index 8b092e88..d63d3799 100644 --- a/playground/vue-sourcemap/Main.vue +++ b/playground/vue-sourcemap/Main.vue @@ -7,6 +7,7 @@ +