uni-plugin-light
Version:
uni-app相关插件、loader及webpack基础配置
73 lines (65 loc) • 2.44 kB
JavaScript
;
var path = require('path');
var loaderUtils = require('loader-utils');
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var path__namespace = /*#__PURE__*/_interopNamespace(path);
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];
var htmlReg = /<template>[\s\n]*<page-meta([\s\S]+)<\/page-meta>[\s\n]*<\/template>/;
// 需要贪婪匹配
var pureHtmlReg = /(?<=<template>[\s\n]*)([\s\S]+)(?=[\s\n]*<\/template>)/;
function insertPageMeta(source) {
if (!shouldUseLoader.call(this, PLATFORMS_MP)) return source;
var options = loaderUtils.getOptions(this) || {};
var _options$pages = options.pages,
pages = _options$pages === void 0 ? [] : _options$pages;
var resourcePath = this.resourcePath;
var rootPath = path__namespace.resolve(process.cwd(), './src', process.env.VUE_APP_DIR || '');
var fullPages = pages.map(function (item) {
return "".concat(path__namespace.resolve(rootPath, item), ".vue");
});
if (!fullPages.includes(resourcePath)) {
return source;
}
if (source.match(htmlReg)) {
return source;
}
var res = source.replace(pureHtmlReg, function (a, b) {
var fontsizeStr = ':root-font-size="mixinRootFontSize + \'px\'" page-style="height: 100%;width: 100%;" ';
return "<page-meta ".concat(fontsizeStr, ">").concat(b, "</page-meta>");
});
return res;
}
module.exports = insertPageMeta;