From 2a720e851bc84ad53f61dcca1720e01302097fdf Mon Sep 17 00:00:00 2001 From: Nathan Reid Date: Thu, 29 Jun 2017 22:50:01 -0500 Subject: [PATCH 1/2] enable loading of .vue files from npm packages --- packages/vue-component/plugin/vue-compiler.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/vue-component/plugin/vue-compiler.js b/packages/vue-component/plugin/vue-compiler.js index 017df94..41ed41f 100644 --- a/packages/vue-component/plugin/vue-compiler.js +++ b/packages/vue-component/plugin/vue-compiler.js @@ -153,11 +153,22 @@ VueComponentCompiler = class VueCompo extends CachingCompiler { const { js, templateHash } = generateJs(vueId, inputFile, compileResult) + let outputFilePath = inputFile.getPathInPackage(); + // Meteor will error when loading .vue files on the server unless they are postfixed with .js + if (inputFile.getArch().indexOf('os') === 0 && inputFilePath.indexOf('node_modules') !== -1) { + outputFilePath += '.js'; + } + + // Including the source maps for .vue files from node_modules breaks source mapping. + const sourceMap = inputFilePath.indexOf('node_modules') === -1 + ? compileResult.map + : undefined; + // Add JS Source file inputFile.addJavaScript({ - path: inputFile.getPathInPackage(), + path: outputFilePath, data: js, - sourceMap: compileResult.map, + sourceMap: sourceMap, lazy: false, }); From 8730baa2681fabd90de1a119b30a3909b4f2ca9c Mon Sep 17 00:00:00 2001 From: Nathan Reid Date: Fri, 30 Jun 2017 01:09:57 -0500 Subject: [PATCH 2/2] fix ES module detection --- packages/vue-component/plugin/vue-compiler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue-component/plugin/vue-compiler.js b/packages/vue-component/plugin/vue-compiler.js index 41ed41f..a3b5e7a 100644 --- a/packages/vue-component/plugin/vue-compiler.js +++ b/packages/vue-component/plugin/vue-compiler.js @@ -621,7 +621,7 @@ function generateJs (vueId, inputFile, compileResult, isHotReload = false) { js += `__vue_options__.packageName = '${inputFile.getPackageName()}';`; // Export - js += `module.export('default', exports.default = __vue_script__);`; + js += `module.export('default', exports.default = __vue_script__);exports.__esModule = true;`; if (!isHotReload) { // Hot-reloading