EASYAIuniappNewUI/node_modules/@dcloudio/uni-app-uts/dist/plugins/android/uvue/index.js
2025-02-08 18:50:38 +08:00

118 lines
5.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniAppUVuePlugin = void 0;
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const shared_1 = require("@vue/shared");
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
const descriptorCache_1 = require("./descriptorCache");
const utils_1 = require("../utils");
const style_1 = require("./code/style");
const main_1 = require("./sfc/main");
function uniAppUVuePlugin() {
const options = (0, descriptorCache_1.getResolvedOptions)();
const appVue = (0, uni_cli_shared_1.resolveAppVue)(process.env.UNI_INPUT_DIR);
function isAppVue(id) {
return (0, uni_cli_shared_1.normalizePath)(id) === appVue;
}
return {
name: 'uni:app-uvue',
apply: 'build',
async resolveId(id) {
// serve sub-part requests (*?vue) as virtual modules
if ((0, uni_cli_shared_1.parseVueRequest)(id).query.vue) {
return id;
}
},
load(id) {
const { filename, query } = (0, uni_cli_shared_1.parseVueRequest)(id);
// select corresponding block for sub-part virtual modules
if (query.vue) {
if (query.src) {
return fs_extra_1.default.readFileSync(filename, 'utf-8');
}
const descriptor = (0, descriptorCache_1.getDescriptor)(filename, options);
let block;
if (query.type === 'style') {
block = descriptor.styles[query.index];
}
else if (query.index != null) {
block = descriptor.customBlocks[query.index];
}
if (block) {
return {
code: block.content,
map: block.map,
};
}
}
},
async transform(code, id) {
const { filename, query } = (0, uni_cli_shared_1.parseVueRequest)(id);
if (!(0, utils_1.isVue)(filename)) {
return;
}
if (!query.vue) {
// main request
return (0, main_1.transformMain)((0, utils_1.transformUniCloudMixinDataCom)(code), filename, {
...options,
componentType: isAppVue(filename)
? 'app'
: query.type === 'page'
? 'page'
: 'component',
}, this);
}
else {
// sub block request
const descriptor = query.src
? (0, descriptorCache_1.getSrcDescriptor)(filename)
: (0, descriptorCache_1.getDescriptor)(filename, options);
if (query.type === 'style') {
return (0, style_1.transformStyle)(code, descriptor, Number(query.index), options, this, filename);
}
}
},
generateBundle(_, bundle) {
// 遍历vue文件填充style尽量减少全局变量
Object.keys(bundle).forEach((name) => {
const file = bundle[name];
if (file &&
file.type === 'asset' &&
isVueFile(file.fileName) &&
(0, shared_1.isString)(file.source)) {
let fileName = (0, uni_cli_shared_1.normalizePath)(file.fileName);
if (process.env.UNI_APP_X_TSC === 'true') {
fileName = fileName.replace('.ts', '');
}
const className = process.env.UNI_COMPILE_TARGET === 'ext-api'
? // components/map/map.vue => UniMap
(0, uni_cli_shared_1.genUTSClassName)(path_1.default.basename(fileName), options.classNamePrefix)
: (0, uni_cli_shared_1.genUTSClassName)(fileName, options.classNamePrefix);
const classNameComment = `/*${className}Styles*/`;
if (file.source.includes(classNameComment)) {
const styleAssetName = fileName + '.style.uts';
const styleAsset = bundle[styleAssetName];
if (styleAsset &&
styleAsset.type === 'asset' &&
(0, shared_1.isString)(styleAsset.source)) {
file.source = file.source.replace(classNameComment, styleAsset.source.replace('export ', ''));
delete bundle[styleAssetName];
}
}
}
});
},
};
}
exports.uniAppUVuePlugin = uniAppUVuePlugin;
function isVueFile(filename) {
return (filename.endsWith('.uvue') ||
filename.endsWith('.vue') ||
filename.endsWith('.uvue.ts') ||
filename.endsWith('.vue.ts'));
}