You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
2.4 KiB

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniConsolePlugin = void 0;
const debug_1 = __importDefault(require("debug"));
const pluginutils_1 = require("@rollup/pluginutils");
const utils_1 = require("../utils");
const console_1 = require("../../logs/console");
const utils_2 = require("../../vite/utils/utils");
const filter_1 = require("../../filter");
const debugConsole = (0, debug_1.default)('uni:console');
function uniConsolePlugin(options) {
const filter = (0, pluginutils_1.createFilter)(options.include, options.exclude);
let resolvedConfig;
let dropConsole = false;
return {
name: 'uni:console',
enforce: 'pre',
configResolved(config) {
resolvedConfig = config;
// 理论上发行模式就不应该有这个逻辑了,只不过为了尽量不引发兼容性问题,目前严谨一些判断是否配置了 drop_console
if (process.env.NODE_ENV !== 'development') {
const compressOptions = resolvedConfig.build.terserOptions?.compress;
if (compressOptions && typeof compressOptions === 'object') {
dropConsole = !!compressOptions.drop_console;
}
}
},
transform(code, id) {
if (dropConsole) {
return;
}
if ((0, filter_1.isRenderjs)(id) || (0, filter_1.isWxs)(id)) {
return {
code: (0, console_1.restoreConsoleExpr)(code),
map: { mappings: '' },
};
}
if (!filter(id))
return null;
if (!(0, utils_1.isJsFile)(id))
return null;
let { filename } = (0, utils_1.parseVueRequest)(id);
if (options.filename) {
filename = options.filename(filename);
}
if (!filename) {
return null;
}
if (!code.includes('console.')) {
return null;
}
debugConsole(id);
return (0, console_1.rewriteConsoleExpr)(options.method, id, filename, code, (0, utils_2.withSourcemap)(resolvedConfig));
},
};
}
exports.uniConsolePlugin = uniConsolePlugin;