uni-ticket-system/node_modules/@dcloudio/uni-mp-vite/dist/plugins/usingComponents.js
2023-12-05 10:11:10 +08:00

85 lines
4.0 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.dynamicImport = exports.uniUsingComponentsPlugin = void 0;
const path_1 = __importDefault(require("path"));
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
const entry_1 = require("./entry");
function uniUsingComponentsPlugin(options = {}) {
const normalizeComponentName = options.normalizeComponentName || ((name) => name);
const parseAst = (source, id) => {
return (0, uni_cli_shared_1.parseProgram)(source, id, {
babelParserPlugins: options.babelParserPlugins,
});
};
const inputDir = process.env.UNI_INPUT_DIR;
let resolvedConfig;
return {
name: 'uni:mp-using-component',
enforce: 'post',
configResolved(config) {
resolvedConfig = config;
},
async transform(source, id) {
const { filename, query } = (0, uni_cli_shared_1.parseVueRequest)(id);
if ((0, uni_cli_shared_1.isAppVue)(filename)) {
return null;
}
const sourceMap = (0, uni_cli_shared_1.withSourcemap)(resolvedConfig);
const dynamicImportOptions = {
id,
sourceMap,
dynamicImport,
};
const resolve = async (source, importer, options) => {
const id = (0, uni_cli_shared_1.resolveUTSModule)(source, importer || process.env.UNI_INPUT_DIR);
if (id) {
source = id;
}
return this.resolve(source, importer, options);
};
if (query.vue) {
if (query.type === 'script') {
// 需要主动监听
this.addWatchFile(filename);
const descriptor = await (0, uni_cli_shared_1.parseScriptDescriptor)(filename, parseAst(source, id), {
resolve,
isExternal: true,
});
(0, uni_cli_shared_1.updateMiniProgramComponentsByScriptFilename)(filename, inputDir, normalizeComponentName);
return (0, uni_cli_shared_1.transformDynamicImports)(source, descriptor.imports, dynamicImportOptions);
}
else if (query.type === 'template') {
// 需要主动监听
this.addWatchFile(filename);
const descriptor = await (0, uni_cli_shared_1.parseTemplateDescriptor)(filename, parseAst(source, id), {
resolve,
isExternal: true,
});
(0, uni_cli_shared_1.updateMiniProgramComponentsByTemplateFilename)(filename, inputDir, normalizeComponentName);
return (0, uni_cli_shared_1.transformDynamicImports)(source, descriptor.imports, dynamicImportOptions);
}
return null;
}
if (!uni_cli_shared_1.EXTNAME_VUE.includes(path_1.default.extname(filename))) {
return null;
}
const ast = parseAst(source, id);
const descriptor = await (0, uni_cli_shared_1.parseMainDescriptor)(filename, ast, resolve);
(0, uni_cli_shared_1.updateMiniProgramComponentsByMainFilename)(filename, inputDir, normalizeComponentName);
return (0, uni_cli_shared_1.transformDynamicImports)(source, descriptor.imports, dynamicImportOptions);
},
};
}
exports.uniUsingComponentsPlugin = uniUsingComponentsPlugin;
function dynamicImport(name, value) {
// 开发者可能将页面作为组件来引用
if ((0, uni_cli_shared_1.isMiniProgramPageFile)(value, process.env.UNI_INPUT_DIR)) {
return `const ${name} = ()=>import('${(0, entry_1.virtualPagePath)(value)}')`;
}
return `const ${name} = ()=>import('${(0, entry_1.virtualComponentPath)(value)}')`;
}
exports.dynamicImport = dynamicImport;