| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- "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 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
- // if (process.env.UNI_APP_X_TSC === 'true') {
- // return {
- // code: uts,
- // map: sourceMap as SourceMapInput,
- // }
- // }
- return (0, main_1.transformMain)(code, filename, options, this, isAppVue(filename));
- }
- 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' &&
- (0, utils_1.isVue)(file.fileName) &&
- (0, shared_1.isString)(file.source)) {
- const fileName = (0, uni_cli_shared_1.normalizePath)(file.fileName);
- const classNameComment = `/*${(0, uni_cli_shared_1.genUTSClassName)(fileName, options.classNamePrefix)}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;
|