From 4897e55b0dc821c98c2392e2e47e7c84bb6dfb14 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Fri, 31 Jan 2020 03:38:39 +0800 Subject: [PATCH] fix: vue-template-compiler can be optional if @vue/compiler-sfc presents (#5123) --- packages/@vue/cli-service/lib/config/base.js | 21 ++++++++++++++------ packages/@vue/cli-service/package.json | 3 +++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/@vue/cli-service/lib/config/base.js b/packages/@vue/cli-service/lib/config/base.js index 5081e2f749..ab8c89b023 100644 --- a/packages/@vue/cli-service/lib/config/base.js +++ b/packages/@vue/cli-service/lib/config/base.js @@ -73,12 +73,21 @@ module.exports = (api, options) => { // js is handled by cli-plugin-babel --------------------------------------- // vue-loader -------------------------------------------------------------- - const vueLoaderCacheConfig = api.genCacheConfig('vue-loader', { - 'vue-loader': require('vue-loader/package.json').version, - /* eslint-disable-next-line node/no-extraneous-require */ - '@vue/component-compiler-utils': require('@vue/component-compiler-utils/package.json').version, - 'vue-template-compiler': require('vue-template-compiler/package.json').version - }) + const vueLoaderCacheIdentifier = { + 'vue-loader': require('vue-loader/package.json').version + } + + // The following 2 deps are sure to exist in Vue 2 projects. + // But once we switch to Vue 3, they're no longer mandatory. + // (In Vue 3 they are replaced by @vue/compiler-sfc) + // So wrap them in a try catch block. + try { + vueLoaderCacheIdentifier['@vue/component-compiler-utils'] = + require('@vue/component-compiler-utils/package.json').version + vueLoaderCacheIdentifier['vue-template-compiler'] = + require('vue-template-compiler/package.json').version + } catch (e) {} + const vueLoaderCacheConfig = api.genCacheConfig('vue-loader', vueLoaderCacheIdentifier) webpackConfig.module .rule('vue') diff --git a/packages/@vue/cli-service/package.json b/packages/@vue/cli-service/package.json index 5a1bf70ae4..c368fdf932 100644 --- a/packages/@vue/cli-service/package.json +++ b/packages/@vue/cli-service/package.json @@ -94,6 +94,9 @@ }, "stylus-loader": { "optional": true + }, + "vue-template-compiler": { + "optional": true } }, "devDependencies": {