| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.uniEasycomPlugin = void 0;
- const path_1 = __importDefault(require("path"));
- const pluginutils_1 = require("@rollup/pluginutils");
- const shared_1 = require("@vue/shared");
- const uni_shared_1 = require("@dcloudio/uni-shared");
- const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
- const H5_COMPONENTS_PATH = '@dcloudio/uni-h5';
- const xBaseComponents = ['slider', 'switch'];
- const baseComponents = [
- 'audio',
- 'button',
- 'canvas',
- 'checkbox',
- 'checkbox-group',
- 'editor',
- 'form',
- 'icon',
- 'image',
- 'input',
- 'label',
- 'movable-area',
- 'movable-view',
- 'navigator',
- 'picker-view',
- 'picker-view-column',
- 'progress',
- 'radio',
- 'radio-group',
- 'resize-sensor',
- 'rich-text',
- 'scroll-view',
- 'slider',
- 'swiper',
- 'swiper-item',
- 'switch',
- 'text',
- 'textarea',
- 'view',
- 'list-view',
- 'list-item',
- 'sticky-section',
- 'sticky-header',
- ];
- function uniEasycomPlugin(options) {
- const filter = (0, pluginutils_1.createFilter)(options.include, options.exclude);
- let needCombineBuiltInCss = false;
- return {
- name: 'uni:h5-easycom',
- configResolved(config) {
- needCombineBuiltInCss = (0, uni_cli_shared_1.isCombineBuiltInCss)(config);
- },
- transform(code, id) {
- if (!filter(id)) {
- return;
- }
- const { filename } = (0, uni_cli_shared_1.parseVueRequest)(id);
- if (!uni_cli_shared_1.EXTNAME_VUE_TEMPLATE.includes(path_1.default.extname(filename))) {
- return;
- }
- if (!code.includes('_resolveComponent')) {
- return;
- }
- let i = 0;
- const importDeclarations = [];
- code = code.replace(/_resolveComponent\("(.+?)"(, true)?\)/g, (str, name) => {
- if (name && !name.startsWith('_')) {
- if ((0, uni_shared_1.isBuiltInComponent)(name)) {
- name = name.replace(uni_shared_1.COMPONENT_PREFIX, '');
- const local = `__syscom_${i++}`;
- if (needCombineBuiltInCss) {
- // 发行模式下,应该将内置组件css输出到入口css中
- resolveBuiltInCssImport(name).forEach((cssImport) => uni_cli_shared_1.buildInCssSet.add(cssImport));
- return (0, uni_cli_shared_1.addImportDeclaration)(importDeclarations, local, H5_COMPONENTS_PATH, (0, shared_1.capitalize)((0, shared_1.camelize)(name)));
- }
- return addBuiltInImportDeclaration(importDeclarations, local, name);
- }
- const source = (0, uni_cli_shared_1.matchEasycom)(name);
- if (source) {
- // 处理easycom组件优先级
- return (0, uni_cli_shared_1.genResolveEasycomCode)(importDeclarations, str, (0, uni_cli_shared_1.addImportDeclaration)(importDeclarations, `__easycom_${i++}`, source));
- }
- }
- return str;
- });
- if (importDeclarations.length) {
- code = importDeclarations.join('') + code;
- }
- return {
- code,
- map: null,
- };
- },
- };
- }
- exports.uniEasycomPlugin = uniEasycomPlugin;
- function resolveBuiltInCssImport(name) {
- const cssImports = [];
- if (baseComponents.includes(name)) {
- const isX = process.env.UNI_APP_X === 'true';
- if (isX && xBaseComponents.includes(name)) {
- cssImports.push(uni_cli_shared_1.X_BASE_COMPONENTS_STYLE_PATH + name + '.css');
- }
- else {
- cssImports.push(uni_cli_shared_1.BASE_COMPONENTS_STYLE_PATH + name + '.css');
- }
- }
- else {
- cssImports.push(uni_cli_shared_1.H5_COMPONENTS_STYLE_PATH + name + '.css');
- }
- const deps = uni_cli_shared_1.COMPONENT_DEPS_CSS[name];
- deps && deps.forEach((dep) => cssImports.push(dep));
- return cssImports;
- }
- function addBuiltInImportDeclaration(importDeclarations, local, name) {
- resolveBuiltInCssImport(name).forEach((cssImport) => importDeclarations.push(`import '${cssImport}';`));
- return (0, uni_cli_shared_1.addImportDeclaration)(importDeclarations, local, H5_COMPONENTS_PATH, (0, shared_1.capitalize)((0, shared_1.camelize)(name)));
- }
|