diff --git a/lib/loader.js b/lib/loader.js index f2a61c005..eff78b1d4 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -178,8 +178,11 @@ module.exports = function (content) { (isProduction ? '' : checkNamedExports) + '__vue_options__ = __vue_exports__ = __vue_exports__.default\n' + '}\n' + + // for constructor export extendOptions + 'var extendOptions = __vue_options__.extendOptions\n' + // constructor export interop 'if (typeof __vue_options__ === "function") {\n' + + ' extendOptions = __vue_options__.extendOptions\n' + ' __vue_options__ = __vue_options__.options\n' + '}\n' + // add filename in dev @@ -197,7 +200,11 @@ module.exports = function (content) { // attach render functions to exported options exports += '__vue_options__.render = __vue_template__.render\n' + - '__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n' + '__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n' + + 'if (extendOptions) {\n' + + ' extendOptions.render = __vue_template__.render\n' + + ' extendOptions.staticRenderFns = __vue_template__.staticRenderFns\n' + + '}\n' } // attach scoped id diff --git a/test/test.js b/test/test.js index c7327255f..c261a4da8 100644 --- a/test/test.js +++ b/test/test.js @@ -351,6 +351,7 @@ describe('vue-loader', function () { var vnode = mockRender(Module.options, { msg: 'success' }) + expect(Module.extendOptions).to.haveOwnProperty('render') expect(vnode.tag).to.equal('div') expect(vnode.children[0]).to.equal('success') expect(new Module().msg === 'success')