| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- "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;
|