feat: support component-level compilerOptions when using runtime compiler

- The `delimiters` component option is deprecated.
  Use `compilerOptions.delimiters` instead.
This commit is contained in:
Evan You
2021-04-28 11:35:59 -04:00
parent e486254431
commit ce0bbe053a
4 changed files with 142 additions and 7 deletions

View File

@@ -578,6 +578,13 @@ function setupStatefulComponent(
validateDirectiveName(names[i])
}
}
if (Component.compilerOptions && isRuntimeOnly()) {
warn(
`"compilerOptions" is only supported when using a build of Vue that ` +
`includes the runtime compiler. Since you are using a runtime-only ` +
`build, the options should be passed via your build tool config instead.`
)
}
}
// 0. create render proxy property access cache
instance.accessCache = Object.create(null)
@@ -728,12 +735,19 @@ export function finishComponentSetup(
startMeasure(instance, `compile`)
}
const { isCustomElement, compilerOptions } = instance.appContext.config
const {
delimiters,
compilerOptions: componentCompilerOptions
} = Component
const finalCompilerOptions: CompilerOptions = extend(
{
isCustomElement: isCustomElement || NO,
delimiters: Component.delimiters
},
compilerOptions
extend(
{
isCustomElement,
delimiters
},
compilerOptions
),
componentCompilerOptions
)
if (__COMPAT__) {
// pass runtime compat config into the compiler