fix: do not drop SFC runtime behavior code in global builds

fix #873
This commit is contained in:
Evan You 2020-03-23 15:10:35 -04:00
parent 4126a9dd51
commit 4c1a193617
3 changed files with 18 additions and 29 deletions

View File

@ -124,7 +124,6 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
} }
return publicGetter(target) return publicGetter(target)
} else if ( } else if (
__BUNDLER__ &&
(cssModule = type.__cssModules) && (cssModule = type.__cssModules) &&
(cssModule = cssModule[key]) (cssModule = cssModule[key])
) { ) {

View File

@ -8,28 +8,20 @@ export let currentScopeId: string | null = null
const scopeIdStack: string[] = [] const scopeIdStack: string[] = []
export function pushScopeId(id: string) { export function pushScopeId(id: string) {
if (__BUNDLER__) { scopeIdStack.push((currentScopeId = id))
scopeIdStack.push((currentScopeId = id))
}
} }
export function popScopeId() { export function popScopeId() {
if (__BUNDLER__) { scopeIdStack.pop()
scopeIdStack.pop() currentScopeId = scopeIdStack[scopeIdStack.length - 1] || null
currentScopeId = scopeIdStack[scopeIdStack.length - 1] || null
}
} }
export function withScopeId(id: string): <T extends Function>(fn: T) => T { export function withScopeId(id: string): <T extends Function>(fn: T) => T {
if (__BUNDLER__) { return ((fn: Function) =>
return ((fn: Function) => withCtx(function(this: any) {
withCtx(function(this: any) { pushScopeId(id)
pushScopeId(id) const res = fn.apply(this, arguments)
const res = fn.apply(this, arguments) popScopeId()
popScopeId() return res
return res })) as any
})) as any
} else {
return undefined as any
}
} }

View File

@ -563,16 +563,14 @@ function baseCreateRenderer(
} }
// scopeId // scopeId
if (__BUNDLER__) { if (scopeId) {
if (scopeId) { hostSetScopeId(el, scopeId)
hostSetScopeId(el, scopeId) }
} const treeOwnerId = parentComponent && parentComponent.type.__scopeId
const treeOwnerId = parentComponent && parentComponent.type.__scopeId // vnode's own scopeId and the current patched component's scopeId is
// vnode's own scopeId and the current patched component's scopeId is // different - this is a slot content node.
// different - this is a slot content node. if (treeOwnerId && treeOwnerId !== scopeId) {
if (treeOwnerId && treeOwnerId !== scopeId) { hostSetScopeId(el, treeOwnerId + '-s')
hostSetScopeId(el, treeOwnerId + '-s')
}
} }
// children // children