From c82a5dac4900743d5050a39d5e6cf3ff08488ddf Mon Sep 17 00:00:00 2001 From: sunlei Date: Thu, 9 Mar 2017 12:48:04 +0800 Subject: [PATCH 1/3] when vue and vue-template-compiler version mismatch, it should fail loader and webpack --- lib/template-compiler.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/template-compiler.js b/lib/template-compiler.js index b9d0d92e3..8da3e492e 100644 --- a/lib/template-compiler.js +++ b/lib/template-compiler.js @@ -58,6 +58,13 @@ module.exports = function (html) { options.transformToRequire ) } + + var compilerVersion = require('vue-template-compiler/package.json').version + var vueVersion = require('vue').version + + if(vueVersion !== compilerVersion){ + this.emitError(`vue version ${vueVersion} mismatch vue-template-compiler version ${compilerVersion}`) + } var compiled = compiler.compile(html, Object.assign({ preserveWhitespace: options.preserveWhitespace From 7abcea69405a41a044ed0ff2c2464568f2848e03 Mon Sep 17 00:00:00 2001 From: sunlei Date: Thu, 9 Mar 2017 13:08:05 +0800 Subject: [PATCH 2/3] fix code style --- lib/template-compiler.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/template-compiler.js b/lib/template-compiler.js index 8da3e492e..6b1654203 100644 --- a/lib/template-compiler.js +++ b/lib/template-compiler.js @@ -58,11 +58,10 @@ module.exports = function (html) { options.transformToRequire ) } - var compilerVersion = require('vue-template-compiler/package.json').version var vueVersion = require('vue').version - if(vueVersion !== compilerVersion){ + if (vueVersion !== compilerVersion) { this.emitError(`vue version ${vueVersion} mismatch vue-template-compiler version ${compilerVersion}`) } From 8a90e27905eec7a01ef4e2505e3e07d73cbf9368 Mon Sep 17 00:00:00 2001 From: sunlei Date: Fri, 10 Mar 2017 12:15:48 +0800 Subject: [PATCH 3/3] use friendly error message fetch version from package.json to avoid evaluating Vue --- lib/template-compiler.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/template-compiler.js b/lib/template-compiler.js index 6b1654203..cd269ba91 100644 --- a/lib/template-compiler.js +++ b/lib/template-compiler.js @@ -58,11 +58,19 @@ module.exports = function (html) { options.transformToRequire ) } - var compilerVersion = require('vue-template-compiler/package.json').version - var vueVersion = require('vue').version - if (vueVersion !== compilerVersion) { - this.emitError(`vue version ${vueVersion} mismatch vue-template-compiler version ${compilerVersion}`) + // when vue and vue-template-compiler mismatch version, then fail the vue-loader + var vueTemplateCompiler = require('vue-template-compiler/package.json') + var vueVersion = require('vue/package.json').version + if (vueVersion !== vueTemplateCompiler.version) { + this.emitError(`\n + Vue packages version mismatch: + -vue@${vueVersion} + -${vueTemplateCompiler.name}@${vueTemplateCompiler.version} + This may cause things to work incorrectly. Make sure to use the same version for both. + If you are using vue-loader@>=10.0, simply update ${vueTemplateCompiler.name}. + If you are using vue-loader@<10.0 or vueify, re-installing vue-loader/vueify should bump ${vueTemplateCompiler.version} to the latest.\n + `) } var compiled = compiler.compile(html, Object.assign({