From 075271d33b4badea40293df567c344a43af311e2 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Fri, 31 Dec 2021 17:51:52 +0800 Subject: [PATCH] fix(mp): State-Driven Dynamic CSS (question/137302) --- packages/uni-mp-vite/src/plugin/index.ts | 31 ++++++++++++------------ 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/uni-mp-vite/src/plugin/index.ts b/packages/uni-mp-vite/src/plugin/index.ts index 235f75d30..7bb65e853 100644 --- a/packages/uni-mp-vite/src/plugin/index.ts +++ b/packages/uni-mp-vite/src/plugin/index.ts @@ -9,7 +9,11 @@ import { findMiniProgramTemplateFiles, MiniProgramCompilerOptions, } from '@dcloudio/uni-cli-shared' - +import type { + SFCDescriptor, + SFCScriptBlock, + SFCScriptCompileOptions, +} from '@vue/compiler-sfc' import type { CompilerOptions } from '@dcloudio/uni-mp-compiler' import { uniOptions } from './uni' @@ -18,10 +22,6 @@ import { createConfigResolved } from './configResolved' import { emitFile, getFilterFiles, getTemplateFiles } from './template' import { getNVueCssPaths } from '../plugins/pagesJson' -import type { - SFCTemplateCompileOptions, - SFCTemplateCompileResults, -} from '@vue/compiler-sfc' export interface UniMiniProgramPluginOptions { cdn?: number @@ -95,7 +95,7 @@ export function uniMiniProgramPlugin( let resolvedConfig: ResolvedConfig - rewriteCompileTemplate() + rewriteCompileScript() return { name: 'vite:uni-mp', @@ -170,16 +170,17 @@ export function uniMiniProgramPlugin( } } -function rewriteCompileTemplate() { +function rewriteCompileScript() { const compiler = require(resolveBuiltIn('@vue/compiler-sfc')) - const { compileTemplate } = compiler - compiler.compileTemplate = ( - options: SFCTemplateCompileOptions - ): SFCTemplateCompileResults => { - if (options.compilerOptions) { - ;(options.compilerOptions as any).bindingCssVars = - options.ssrCssVars || [] + const { compileScript } = compiler + compiler.compileScript = ( + sfc: SFCDescriptor, + options: SFCScriptCompileOptions + ): SFCScriptBlock => { + if (options?.templateOptions?.compilerOptions) { + ;(options.templateOptions.compilerOptions as any).bindingCssVars = + sfc.cssVars || [] } - return compileTemplate(options) + return compileScript(sfc, options) } } -- GitLab