diff --git a/packages/shared/compile-template.js b/packages/shared/compile-template.js index 0aba6297d..e88d40cf9 100644 --- a/packages/shared/compile-template.js +++ b/packages/shared/compile-template.js @@ -3,6 +3,10 @@ import { compileToFunctions } from 'vue-template-compiler' export function compileTemplate (component: Component) { + if (component.template) { + Object.assign(component, compileToFunctions(component.template)) + } + if (component.components) { Object.keys(component.components).forEach((c) => { const cmp = component.components[c] @@ -19,8 +23,4 @@ export function compileTemplate (component: Component) { if (component.extendOptions && !component.options.render) { compileTemplate(component.options) } - - if (component.template) { - Object.assign(component, compileToFunctions(component.template)) - } } diff --git a/packages/shared/validators.js b/packages/shared/validators.js index ceaad8643..da7cc7b65 100644 --- a/packages/shared/validators.js +++ b/packages/shared/validators.js @@ -41,7 +41,9 @@ export function isVueComponent (component: any) { export function componentNeedsCompiling (component: Component) { return component && !component.render && - (component.template || component.extends) && + (component.template || + component.extends || + component.extendOptions) && !component.functional } diff --git a/test/specs/mount.spec.js b/test/specs/mount.spec.js index 67997efe9..1f1061bb6 100644 --- a/test/specs/mount.spec.js +++ b/test/specs/mount.spec.js @@ -5,7 +5,10 @@ import Component from '~resources/components/component.vue' import ComponentWithProps from '~resources/components/component-with-props.vue' import ComponentWithMixin from '~resources/components/component-with-mixin.vue' import { injectSupported, vueVersion } from '~resources/utils' -import { describeRunIf } from 'conditional-specs' +import { + describeRunIf, + itDoNotRunIf +} from 'conditional-specs' describeRunIf(process.env.TEST_ENV !== 'node', 'mount', () => { @@ -131,6 +134,16 @@ describeRunIf(process.env.TEST_ENV !== 'node', expect(wrapper.html()).to.equal(`