EASYAIuniappNewUI/node_modules/@dcloudio/uni-mp-vite/dist/plugin/index.js
2025-02-08 18:50:38 +08:00

147 lines
6.4 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.genUVueCssCode = exports.uniMiniProgramPlugin = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
const uni_1 = require("./uni");
const build_1 = require("./build");
const configResolved_1 = require("./configResolved");
const template_1 = require("./template");
const pagesJson_1 = require("../plugins/pagesJson");
const polyfill_1 = require("./polyfill");
function uniMiniProgramPlugin(options) {
const { vite: { alias, copyOptions }, template, style, } = options;
let resetCssEmitted = false;
let autoImportFilterEmitted = false;
let resolvedConfig;
(0, polyfill_1.rewriteCompileScriptOnce)();
(0, polyfill_1.rewriteCompilerSfcParseOnce)();
return {
name: 'uni:mp',
uni: (0, uni_1.uniOptions)({
copyOptions,
customElements: template.customElements,
miniProgram: {
event: template.event,
class: template.class,
filter: template.filter
? {
lang: template.filter.lang,
setStyle: template.filter.setStyle,
generate: template.filter.generate,
}
: undefined,
directive: template.directive,
lazyElement: template.lazyElement,
component: template.component,
emitFile: template_1.emitFile,
slot: template.slot,
checkPropName: template.checkPropName,
},
compilerOptions: template.compilerOptions,
}),
config() {
return {
base: '/', // 小程序平台强制 base
resolve: {
alias: {
vue: (0, uni_cli_shared_1.resolveBuiltIn)(`@dcloudio/uni-mp-vue/${process.env.UNI_APP_X === 'true' ? 'dist-x' : 'dist'}/vue.runtime.esm.js`),
'@vue/devtools-api': (0, uni_cli_shared_1.resolveBuiltIn)('@dcloudio/uni-mp-vue'),
'vue-i18n': (0, uni_cli_shared_1.resolveVueI18nRuntime)(),
...alias,
},
preserveSymlinks: true,
},
css: {
postcss: {
plugins: (0, uni_cli_shared_1.initPostcssPlugin)({
uniApp: (0, uni_cli_shared_1.parseRpx2UnitOnce)(process.env.UNI_INPUT_DIR, process.env.UNI_PLATFORM),
}),
},
},
optimizeDeps: {
noDiscovery: true,
include: [],
},
build: (0, build_1.buildOptions)(),
};
},
configResolved(config) {
resolvedConfig = config;
const plugin = config.plugins.find((p) => p.name === 'vite:vue');
if (plugin?.api?.options) {
plugin.api.options.devToolsEnabled = false;
}
return (0, configResolved_1.createConfigResolved)(options)(config);
},
generateBundle() {
if (template.filter) {
const extname = template.filter.extname;
if (process.env.UNI_APP_X === 'true') {
// 目前 mp-weixinmp-qq、mp-alipaymp-dingtalk、mp-toutiaomp-lark均支持视图层setStyle
if (template.filter.setStyle && !autoImportFilterEmitted) {
autoImportFilterEmitted = true;
this.emitFile({
type: 'asset',
fileName: `common/uniView${extname}`,
source: fs_extra_1.default.readFileSync(path_1.default.resolve(__dirname, '../../lib/filters/uniView.js'), 'utf8'),
});
}
}
const filterFiles = (0, template_1.getFilterFiles)(resolvedConfig, this.getModuleInfo);
Object.keys(filterFiles).forEach((filename) => {
const { code } = filterFiles[filename];
this.emitFile({
type: 'asset',
fileName: filename + extname,
source: code,
});
});
}
const templateFiles = (0, template_1.getTemplateFiles)(template);
Object.keys(templateFiles).forEach((filename) => {
this.emitFile({
type: 'asset',
fileName: filename + template.extname,
source: templateFiles[filename],
});
});
if (!resetCssEmitted) {
if (process.env.UNI_APP_X === 'true') {
resetCssEmitted = true;
this.emitFile({
type: 'asset',
fileName: 'uvue' + style.extname,
source: genUVueCssCode((0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR)),
});
}
else {
const nvueCssPaths = (0, pagesJson_1.getNVueCssPaths)(resolvedConfig);
if (nvueCssPaths && nvueCssPaths.length) {
resetCssEmitted = true;
this.emitFile({
type: 'asset',
fileName: 'nvue' + style.extname,
source: (0, uni_cli_shared_1.genNVueCssCode)((0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR)),
});
}
}
}
},
};
}
exports.uniMiniProgramPlugin = uniMiniProgramPlugin;
function genUVueCssCode(manifestJson) {
let cssCode = fs_extra_1.default.readFileSync(path_1.default.resolve(__dirname, '../../lib/uvue.css'), 'utf8');
const flexDirection = (0, uni_cli_shared_1.parseUniXFlexDirection)(manifestJson);
if (flexDirection !== 'column') {
cssCode = cssCode.replace('column', flexDirection);
}
return cssCode;
}
exports.genUVueCssCode = genUVueCssCode;