diff --git a/packages/vue-cli-plugin-uni/lib/app-plus/index.js b/packages/vue-cli-plugin-uni/lib/app-plus/index.js index 3e3ff7c9ef12fae5f9e508a9a356288a1fec43ab..a455739fc0d430e37303b305aad58a825755f5a5 100644 --- a/packages/vue-cli-plugin-uni/lib/app-plus/index.js +++ b/packages/vue-cli-plugin-uni/lib/app-plus/index.js @@ -7,7 +7,8 @@ const { } = require('@dcloudio/uni-cli-shared') const { - isUnaryTag + isUnaryTag, + getPartialIdentifier } = require('../util') function getProvides () { @@ -79,8 +80,8 @@ const v3 = { externals: { vue: 'Vue' }, - entry () { - return entry + entry () { + return entry }, output: { filename: '[name].js', @@ -127,18 +128,30 @@ const v3 = { ] } }, - chainWebpack (webpackConfig, vueOptions) { + chainWebpack (webpackConfig, vueOptions, api) { webpackConfig.entryPoints.delete('app') const isAppService = !!vueOptions.pluginOptions['uni-app-plus']['service'] const isAppView = !!vueOptions.pluginOptions['uni-app-plus']['view'] - const compilerOptions = { + const cacheConfig = { + cacheDirectory: false, + cacheIdentifier: false + } + + if (process.env.UNI_USING_CACHE) { + Object.assign(cacheConfig, api.genCacheConfig( + 'vue-template-compiler/' + process.env.UNI_PLATFORM, + getPartialIdentifier() + )) + } + + const compilerOptions = Object.assign({ isUnaryTag, preserveWhitespace: false, service: isAppService, view: isAppView - } + }, cacheConfig) // disable vue cache-loader webpackConfig.module @@ -150,20 +163,30 @@ const v3 = { isAppService, isAppView, compiler: getPlatformCompiler(), - compilerOptions, - cacheDirectory: false, - cacheIdentifier: false + compilerOptions })) - .end() - .use('uniapp-custom-block-loader') - .loader(require.resolve('@dcloudio/vue-cli-plugin-uni/packages/webpack-custom-block-loader')) - .options({ - compiler: getPlatformCompiler() - }) - .end() - .uses - .delete('cache-loader') .end() + .use('uniapp-custom-block-loader') + .loader(require.resolve('@dcloudio/vue-cli-plugin-uni/packages/webpack-custom-block-loader')) + .options({ + compiler: getPlatformCompiler() + }) + + // 是否启用 cache + if (process.env.UNI_USING_CACHE) { + webpackConfig.module + .rule('vue') + .use('cache-loader') + .tap(options => Object.assign(options, api.genCacheConfig( + 'vue-loader/' + process.env.UNI_PLATFORM, + getPartialIdentifier() + ))) + } else { + webpackConfig.module + .rule('vue') + .uses + .delete('cache-loader') + } if (isAppView) { if (process.env.NODE_ENV === 'production') { diff --git a/packages/vue-cli-plugin-uni/lib/h5/index.js b/packages/vue-cli-plugin-uni/lib/h5/index.js index cb4f5c8e7545df70390353d6679d2612eec5ba9d..61ef979b61b333bcc1e9aa73374d58f020af6470 100644 --- a/packages/vue-cli-plugin-uni/lib/h5/index.js +++ b/packages/vue-cli-plugin-uni/lib/h5/index.js @@ -105,7 +105,7 @@ module.exports = { }, { resourceQuery: /vue&type=template/, use: [{ - loader: resolve('packages/h5-vue-template-loader') + loader: resolve('packages/webpack-uni-app-loader/filter-modules-template.js') }] }, { resourceQuery: [/lang=wxs/, /blockType=wxs/], diff --git a/packages/vue-cli-plugin-uni/lib/vue-loader.js b/packages/vue-cli-plugin-uni/lib/vue-loader.js index e680c62367b27e0b491b1276d2e19ccd350ebc6b..db5ba5d74e3ce4c9e02511334f97b421db039cd3 100644 --- a/packages/vue-cli-plugin-uni/lib/vue-loader.js +++ b/packages/vue-cli-plugin-uni/lib/vue-loader.js @@ -14,7 +14,6 @@ module.exports = function modifyVueLoader (webpackConfig, compilerOptions, api) cacheDirectory: false, cacheIdentifier: false } - const partialIdentifier = {} if (process.env.UNI_USING_CACHE) { Object.assign(cacheConfig, api.genCacheConfig( @@ -60,7 +59,7 @@ module.exports = function modifyVueLoader (webpackConfig, compilerOptions, api) .use('cache-loader') .tap(options => Object.assign(options, api.genCacheConfig( 'vue-loader/' + process.env.UNI_PLATFORM, - partialIdentifier + getPartialIdentifier() ))) } else { webpackConfig.module