Skip to content

Commit e4f981e

Browse files
committed
fix: opt-out if it's a precompiled file
1 parent 668a29f commit e4f981e

File tree

3 files changed

+20
-13
lines changed

3 files changed

+20
-13
lines changed

packages/plugin-vue/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { version } from '../package.json'
1313
import { resolveCompiler } from './compiler'
1414
import { parseVueRequest } from './utils/query'
1515
import {
16+
type ExtendedSFCDescriptor,
1617
getDescriptor,
1718
getSrcDescriptor,
1819
getTempSrcDescriptor,
@@ -382,7 +383,7 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin<Api> {
382383
)
383384
} else {
384385
// sub block request
385-
const descriptor = query.src
386+
const descriptor: ExtendedSFCDescriptor = query.src
386387
? getSrcDescriptor(filename, query) ||
387388
getTempSrcDescriptor(filename, query)
388389
: getDescriptor(filename, options.value)!

packages/plugin-vue/src/style.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import type { SFCDescriptor } from 'vue/compiler-sfc'
21
import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup'
32
import type { RawSourceMap } from 'source-map-js'
43
import { formatPostcssSourceMap } from 'vite'
4+
import type { ExtendedSFCDescriptor } from './utils/descriptorCache'
55
import type { ResolvedOptions } from './index'
66

77
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
88
export async function transformStyle(
99
code: string,
10-
descriptor: SFCDescriptor,
10+
descriptor: ExtendedSFCDescriptor,
1111
index: number,
1212
options: ResolvedOptions,
1313
pluginContext: TransformPluginContext,
@@ -62,12 +62,13 @@ export async function transformStyle(
6262
return {
6363
code: result.code,
6464
map: map,
65-
meta: block.scoped
66-
? {
67-
vite: {
68-
cssScopeTo: [descriptor.filename, 'default'],
69-
},
70-
}
71-
: undefined,
65+
meta:
66+
block.scoped && !descriptor.isTemp
67+
? {
68+
vite: {
69+
cssScopeTo: [descriptor.filename, 'default'],
70+
},
71+
}
72+
: undefined,
7273
}
7374
}

packages/plugin-vue/src/utils/descriptorCache.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ export function invalidateDescriptor(filename: string, hmr = false): void {
7575
}
7676
}
7777

78+
export interface ExtendedSFCDescriptor extends SFCDescriptor {
79+
isTemp?: boolean
80+
}
81+
7882
export function getDescriptor(
7983
filename: string,
8084
options: ResolvedOptions,
@@ -113,7 +117,7 @@ export function getSrcDescriptor(
113117
export function getTempSrcDescriptor(
114118
filename: string,
115119
query: VueQuery,
116-
): SFCDescriptor {
120+
): ExtendedSFCDescriptor {
117121
// this is only used for pre-compiled <style src> with scoped flag
118122
return {
119123
filename,
@@ -124,9 +128,10 @@ export function getTempSrcDescriptor(
124128
loc: {
125129
start: { line: 0, column: 0 },
126130
},
127-
},
131+
} as any,
128132
],
129-
} as SFCDescriptor
133+
isTemp: true,
134+
} as ExtendedSFCDescriptor
130135
}
131136

132137
export function setSrcDescriptor(

0 commit comments

Comments
 (0)