UNPKG

uni-plugin-light

Version:

uni-app相关插件、loader及webpack基础配置

60 lines (54 loc) 1.79 kB
'use strict'; var loaderUtils = require('loader-utils'); var PLATFORM_MAP = { MP_WX: 'mp-weixin', MP_QQ: 'mp-qq', H5: 'h5' }; var ALL_PLATFORM = 'ALL'; function shouldUseLoader() { var defaultPlatforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var options = loaderUtils.getOptions(this) || {}; var _options$platforms = options.platforms, platforms = _options$platforms === void 0 ? defaultPlatforms : _options$platforms; var platform = process.env.UNI_PLATFORM || ''; if (platforms === ALL_PLATFORM || platforms.indexOf(ALL_PLATFORM) > -1) { return true; } return platforms.includes(platform); } var PLATFORMS_MP = [PLATFORM_MAP.MP_WX, PLATFORM_MAP.MP_QQ]; /** * 替换vue文件key的表示,以解决转换报错 * 比如将 :key="'type' + index" 转为 :key="type-${index}" * @example * ```ts * const testA = ':key="\'templateList\' + index "'; transformKey(testA); const testB = ':key="index + \'templateList\'"'; transformKey(testB); const testC = ' :key="memberIndex + \'blueindex\' "'; transformKey(testC); * ``` */ function transformKey(source) { if (!shouldUseLoader.call(this, PLATFORMS_MP)) return source; var re = /:key="'(\w+)'\s*\+\s*(\w+)\s*"/g; var reBack = /:key="(\w+)\s*\+\s*'(\w+)'\s*"/g; if (re.test(source)) { return source.replace(re, function (a, b, c) { var realKey = "`".concat(b, "-${").concat(c, "}`"); var res = ":key=\"".concat(realKey, "\""); return res; }); } if (reBack.test(source)) { return source.replace(reBack, function (a, b, c) { var realKey = "`".concat(c, "-${").concat(b, "}`"); var res = ":key=\"".concat(realKey, "\""); return res; }); } return source; } module.exports = transformKey;