UNPKG

uni-plugin-light

Version:

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

73 lines (65 loc) 2.44 kB
'use strict'; 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;