diff --git a/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js b/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js index 4f572e5037c71cc941849046b3a19a847fd0398a..97be217eea33cf3a70872553674c2fd809080151 100644 --- a/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js +++ b/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js @@ -13,6 +13,12 @@ const { getTemplatePath } = require('@dcloudio/uni-cli-shared') const fileLoader = require('@dcloudio/uni-cli-shared/lib/file-loader') +const { + compileI18nJsonStr +} = require('@dcloudio/uni-i18n') +const { + initI18nOptions +} = require('@dcloudio/uni-cli-shared/lib/i18n') const WebpackAppPlusNVuePlugin = process.env.UNI_USING_V3 ? require('../packages/webpack-app-plus-plugin') : require('../packages/webpack-app-plus-nvue-plugin') @@ -226,11 +232,25 @@ if (process.env.UNI_USING_NATIVE || process.env.UNI_USING_V3_NATIVE) { }] // 自动化测试时,不启用androidPrivacy.json if (!process.env.UNI_AUTOMATOR_WS_ENDPOINT) { - const androidPrivacyPath = path.resolve(process.env.UNI_INPUT_DIR, 'androidPrivacy.json') - if (fs.existsSync(androidPrivacyPath)) { + const fileName = 'androidPrivacy.json' + const context = path.resolve(process.env.UNI_INPUT_DIR) + if (fs.existsSync(path.join(context, fileName))) { patterns.push({ - from: androidPrivacyPath, - to: 'androidPrivacy.json' + from: fileName, + context, + to: fileName, + transform (content) { + const options = initI18nOptions( + process.env.UNI_PLATFORM, + process.env.UNI_INPUT_DIR, + false, + true + ) + if (!options) { + return content + } + return compileI18nJsonStr(content.toString(), options) + } }) } } diff --git a/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js b/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js index 76d7e9e5e1228c01d7ad643ba13ffa54f7e8fbe9..4fe5c91dff03442b2db6b502b62a140dbfe213df 100644 --- a/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js +++ b/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js @@ -92,16 +92,14 @@ function getCopyWebpackPluginOptions (platformOptions, vueOptions) { }) // 自动化测试时,不启用androidPrivacy.json if (process.env.UNI_PLATFORM === 'app-plus' && !process.env.UNI_AUTOMATOR_WS_ENDPOINT) { - const from = 'android*.json' const fileName = 'androidPrivacy.json' const context = path.resolve(process.env.UNI_INPUT_DIR) - const options = { - from, - context, - to: `[name]${CopyWebpackPluginVersion > 5 ? '' : '.'}[ext]`, - noErrorOnMissing: true, - transform (content, path) { - if (path.endsWith(fileName)) { + if (fs.existsSync(path.join(context, fileName))) { + copyOptions.push({ + from: fileName, + context, + to: fileName, + transform (content) { const options = initI18nOptions( process.env.UNI_PLATFORM, process.env.UNI_INPUT_DIR, @@ -113,22 +111,7 @@ function getCopyWebpackPluginOptions (platformOptions, vueOptions) { } return compileI18nJsonStr(content.toString(), options) } - return content - } - } - // copy-webpack-plugin/glob-parent 存在 Bug,例如:/test/dir(1 - const globParent = require(require.resolve('glob-parent', { paths: [require.resolve('copy-webpack-plugin')] })) - const parent = globParent(path.join(context, from)) - let canNotWatch - if (parent !== context) { - options.from = fileName - if (!fs.existsSync(path.join(context, fileName))) { - canNotWatch = true - // console.warn(`invalid path: ${context}, can not watch ${fileName}`) - } - } - if (!canNotWatch) { - copyOptions.push(options) + }) } } return copyOptions