| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.uniAppCssPlugin = void 0;
- const path_1 = __importDefault(require("path"));
- const picocolors_1 = __importDefault(require("picocolors"));
- const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
- const uni_nvue_styler_1 = require("@dcloudio/uni-nvue-styler");
- const descriptorCache_1 = require("./uvue/descriptorCache");
- const utils_1 = require("./utils");
- function uniAppCssPlugin() {
- const mainUTS = (0, uni_cli_shared_1.resolveMainPathOnce)(process.env.UNI_INPUT_DIR);
- let resolvedConfig;
- const name = 'uni:app-uvue-css';
- const descriptorOptions = {
- ...(0, descriptorCache_1.getResolvedOptions)(),
- sourceMap: false,
- };
- return {
- name,
- apply: 'build',
- configResolved(config) {
- resolvedConfig = config;
- const uvueCssPostPlugin = (0, uni_cli_shared_1.cssPostPlugin)(config, {
- isJsCode: true,
- platform: process.env.UNI_PLATFORM,
- includeComponentCss: false,
- chunkCssFilename(id) {
- if (id === mainUTS) {
- return 'App.style.uts';
- }
- const { filename } = (0, uni_cli_shared_1.parseVueRequest)(id);
- if ((0, utils_1.isVue)(filename)) {
- return (0, uni_cli_shared_1.normalizeNodeModules)(path_1.default.relative(process.env.UNI_INPUT_DIR, filename) + '.style.uts');
- }
- },
- async chunkCssCode(filename, cssCode) {
- cssCode = (0, uni_cli_shared_1.parseAssets)(resolvedConfig, cssCode);
- const { code, messages } = await (0, uni_nvue_styler_1.parse)(cssCode, {
- filename,
- logLevel: 'ERROR',
- mapOf: 'utsMapOf',
- chunk: 100,
- type: 'uvue',
- platform: process.env.UNI_UTS_PLATFORM,
- trim: true,
- });
- messages.forEach((message) => {
- if (message.type === 'error') {
- let msg = `[plugin:uni:app-uvue-css] ${message.text}`;
- if (message.line && message.column) {
- msg += `\n${(0, uni_cli_shared_1.generateCodeFrame)(cssCode, {
- line: message.line,
- column: message.column,
- }).replace(/\t/g, ' ')}`;
- }
- msg += `\n${(0, uni_cli_shared_1.formatAtFilename)(filename)}`;
- resolvedConfig.logger.error(picocolors_1.default.red(msg));
- }
- });
- return `export const ${(0, uni_cli_shared_1.genUTSClassName)(filename.replace('.style.uts', ''))}Styles = ${code}`;
- },
- });
- // 增加 css plugins
- (0, uni_cli_shared_1.insertBeforePlugin)((0, uni_cli_shared_1.cssPlugin)(config, {
- isAndroidX: true,
- getDescriptor: (filename) => {
- return (0, descriptorCache_1.getDescriptor)(filename, descriptorOptions, false);
- },
- }), name, config);
- const plugins = config.plugins;
- const index = plugins.findIndex((p) => p.name === 'uni:app-uvue');
- plugins.splice(index, 0, uvueCssPostPlugin);
- },
- async transform(source, filename) {
- if (!uni_cli_shared_1.cssLangRE.test(filename) || uni_cli_shared_1.commonjsProxyRE.test(filename)) {
- return;
- }
- if (source.includes('#endif')) {
- source = (0, uni_cli_shared_1.preUVueCss)(source);
- }
- source = (0, uni_cli_shared_1.parseAssets)(resolvedConfig, source);
- // 仅做校验使用
- const { messages } = await (0, uni_nvue_styler_1.parse)(source, {
- filename,
- logLevel: 'WARNING',
- map: true,
- ts: true,
- noCode: true,
- type: 'uvue',
- platform: process.env.UNI_UTS_PLATFORM,
- });
- messages.forEach((message) => {
- if (message.type === 'warning') {
- // 拆分成多行,第一行输出信息(有颜色),后续输出错误代码+文件行号
- resolvedConfig.logger.warn(picocolors_1.default.yellow(`[plugin:uni:app-uvue-css] ${message.text}`));
- let msg = '';
- if (message.line && message.column) {
- msg += `\n${(0, uni_cli_shared_1.generateCodeFrame)(source, {
- line: message.line,
- column: message.column,
- }).replace(/\t/g, ' ')}\n`;
- }
- msg += `${(0, uni_cli_shared_1.formatAtFilename)(filename)}`;
- resolvedConfig.logger.warn(msg);
- }
- });
- return { code: source };
- },
- };
- }
- exports.uniAppCssPlugin = uniAppCssPlugin;
|