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 @@ +