dx(runtime-dom): warn config.isCustomElement usage in runtime-only build (#2945)

This commit is contained in:
HcySunYang 2021-02-25 05:18:55 +08:00 committed by GitHub
parent d0ea74556f
commit 354966204e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 2 deletions

View File

@ -653,6 +653,9 @@ type CompileFunction = (
let compile: CompileFunction | undefined let compile: CompileFunction | undefined
// dev only
export const isRuntimeOnly = () => !compile
/** /**
* For runtime-dom to register the compiler. * For runtime-dom to register the compiler.
* Note the exported method uses any to avoid d.ts relying on the compiler types. * Note the exported method uses any to avoid d.ts relying on the compiler types.

View File

@ -87,7 +87,7 @@ export {
resolveDynamicComponent resolveDynamicComponent
} from './helpers/resolveAssets' } from './helpers/resolveAssets'
// For integration with runtime compiler // For integration with runtime compiler
export { registerRuntimeCompiler } from './component' export { registerRuntimeCompiler, isRuntimeOnly } from './component'
export { export {
useTransitionState, useTransitionState,
resolveTransitionHooks, resolveTransitionHooks,

View File

@ -7,7 +7,8 @@ import {
Renderer, Renderer,
HydrationRenderer, HydrationRenderer,
App, App,
RootHydrateFunction RootHydrateFunction,
isRuntimeOnly
} from '@vue/runtime-core' } from '@vue/runtime-core'
import { nodeOps } from './nodeOps' import { nodeOps } from './nodeOps'
import { patchProp, forcePatchProp } from './patchProp' import { patchProp, forcePatchProp } from './patchProp'
@ -55,6 +56,7 @@ export const createApp = ((...args) => {
if (__DEV__) { if (__DEV__) {
injectNativeTagCheck(app) injectNativeTagCheck(app)
injectCustomElementCheck(app)
} }
const { mount } = app const { mount } = app
@ -83,6 +85,7 @@ export const createSSRApp = ((...args) => {
if (__DEV__) { if (__DEV__) {
injectNativeTagCheck(app) injectNativeTagCheck(app)
injectCustomElementCheck(app)
} }
const { mount } = app const { mount } = app
@ -105,6 +108,25 @@ function injectNativeTagCheck(app: App) {
}) })
} }
// dev only
function injectCustomElementCheck(app: App) {
if (isRuntimeOnly()) {
const value = app.config.isCustomElement
Object.defineProperty(app.config, 'isCustomElement', {
get() {
return value
},
set() {
warn(
`The \`isCustomElement\` config option is only respected when using the runtime compiler.` +
`If you are using the runtime-only build, \`isCustomElement\` must be passed to \`@vue/compiler-dom\` in the build setup instead` +
`- for example, via the \`compilerOptions\` option in vue-loader: https://vue-loader.vuejs.org/options.html#compileroptions.`
)
}
})
}
}
function normalizeContainer( function normalizeContainer(
container: Element | ShadowRoot | string container: Element | ShadowRoot | string
): Element | null { ): Element | null {