fix(compiler): add `vaporRuntimeModuleName` option

This commit is contained in:
三咲智子 Kevin Deng 2024-02-10 21:43:09 +08:00
parent 3d10925c53
commit 0c8153eca8
No known key found for this signature in database
GPG Key ID: 69992F2250DFD93E
3 changed files with 14 additions and 5 deletions

View File

@ -87,7 +87,10 @@ export enum NewlineType {
} }
export interface CodegenContext export interface CodegenContext
extends Omit<Required<CodegenOptions>, 'bindingMetadata' | 'inline'> { extends Omit<
Required<CodegenOptions>,
'bindingMetadata' | 'inline' | 'vaporRuntimeModuleName'
> {
source: string source: string
code: string code: string
line: number line: number

View File

@ -318,6 +318,11 @@ export interface CodegenOptions extends SharedTransformCodegenOptions {
* @default 'vue' * @default 'vue'
*/ */
runtimeModuleName?: string runtimeModuleName?: string
/**
* Customize where to import runtime helpers from.
* @default 'vue/vapor'
*/
vaporRuntimeModuleName?: string
/** /**
* Customize where to import ssr runtime helpers from/** * Customize where to import ssr runtime helpers from/**
* @default 'vue/server-renderer' * @default 'vue/server-renderer'

View File

@ -63,7 +63,7 @@ export class CodegenContext {
public ir: RootIRNode, public ir: RootIRNode,
options: CodegenOptions, options: CodegenOptions,
) { ) {
const defaultOptions = { const defaultOptions: Required<CodegenOptions> = {
mode: 'function', mode: 'function',
prefixIdentifiers: options.mode === 'module', prefixIdentifiers: options.mode === 'module',
sourceMap: false, sourceMap: false,
@ -72,6 +72,7 @@ export class CodegenContext {
optimizeImports: false, optimizeImports: false,
runtimeGlobalName: `Vue`, runtimeGlobalName: `Vue`,
runtimeModuleName: `vue`, runtimeModuleName: `vue`,
vaporRuntimeModuleName: 'vue/vapor',
ssrRuntimeModuleName: 'vue/server-renderer', ssrRuntimeModuleName: 'vue/server-renderer',
ssr: false, ssr: false,
isTS: false, isTS: false,
@ -156,17 +157,17 @@ export function generate(
} }
} }
function genHelperImports({ helpers, vaporHelpers, code }: CodegenContext) { function genHelperImports({ helpers, vaporHelpers, options }: CodegenContext) {
let imports = '' let imports = ''
if (helpers.size) { if (helpers.size) {
imports += `import { ${[...helpers] imports += `import { ${[...helpers]
.map(h => `${h} as _${h}`) .map(h => `${h} as _${h}`)
.join(', ')} } from 'vue';\n` .join(', ')} } from '${options.runtimeModuleName}';\n`
} }
if (vaporHelpers.size) { if (vaporHelpers.size) {
imports += `import { ${[...vaporHelpers] imports += `import { ${[...vaporHelpers]
.map(h => `${h} as _${h}`) .map(h => `${h} as _${h}`)
.join(', ')} } from 'vue/vapor';\n` .join(', ')} } from '${options.vaporRuntimeModuleName}';\n`
} }
return imports return imports
} }