Skip to content

Commit c393b60

Browse files
fix: add support for custom elements for CompileScript (#354)
1 parent a34f630 commit c393b60

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

src/transform.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,22 @@ export async function compileFile(
122122
ssrCode += code
123123
}
124124

125+
const ceFilter = store.sfcOptions.script?.customElement || /\.ce\.vue$/
126+
function isCustomElement(filters: typeof ceFilter): boolean {
127+
if (typeof filters === 'boolean') {
128+
return filters
129+
}
130+
if (typeof filters === 'function') {
131+
return filters(filename)
132+
}
133+
return filters.test(filename)
134+
}
135+
let isCE = isCustomElement(ceFilter)
136+
125137
let clientScript: string
126138
let bindings: BindingMetadata | undefined
127139
try {
128-
const res = await doCompileScript(store, descriptor, id, false, isTS, isJSX)
140+
const res = await doCompileScript(store, descriptor, id, false, isTS, isJSX, isCE)
129141
clientScript = res.code
130142
bindings = res.bindings
131143
clientScriptMap = res.map
@@ -147,6 +159,7 @@ export async function compileFile(
147159
true,
148160
isTS,
149161
isJSX,
162+
isCE
150163
)
151164
ssrScript = ssrScriptResult.code
152165
ssrCode += ssrScript
@@ -212,18 +225,6 @@ export async function compileFile(
212225
}
213226

214227
// styles
215-
const ceFilter = store.sfcOptions.script?.customElement || /\.ce\.vue$/
216-
function isCustomElement(filters: typeof ceFilter): boolean {
217-
if (typeof filters === 'boolean') {
218-
return filters
219-
}
220-
if (typeof filters === 'function') {
221-
return filters(filename)
222-
}
223-
return filters.test(filename)
224-
}
225-
let isCE = isCustomElement(ceFilter)
226-
227228
let css = ''
228229
let styles: string[] = []
229230
for (const style of descriptor.styles) {
@@ -295,6 +296,7 @@ async function doCompileScript(
295296
ssr: boolean,
296297
isTS: boolean,
297298
isJSX: boolean,
299+
isCustomElement: boolean,
298300
): Promise<{ code: string; bindings: BindingMetadata | undefined; map?: any }> {
299301
if (descriptor.script || descriptor.scriptSetup) {
300302
const expressionPlugins: CompilerOptions['expressionPlugins'] = []
@@ -318,6 +320,7 @@ async function doCompileScript(
318320
expressionPlugins,
319321
},
320322
},
323+
customElement: isCustomElement,
321324
})
322325
let code = compiledScript.content
323326
if (isTS) {

0 commit comments

Comments
 (0)