mp-lens
Version:
微信小程序分析工具 (Unused Code, Dependencies, Visualization)
86 lines • 3.54 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadAliasesFromTsConfig = loadAliasesFromTsConfig;
exports.loadMergedAliases = loadMergedAliases;
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
const config_loader_1 = require("./config-loader");
const debug_logger_1 = require("./debug-logger");
/**
* 从 tsconfig.json 读取并解析 paths 别名,返回绝对路径数组
*/
function loadAliasesFromTsConfig(projectRoot) {
try {
const fsPath = path.join(projectRoot, 'tsconfig.json');
if (!fs.existsSync(fsPath))
return {};
const tsconfig = JSON.parse(fs.readFileSync(fsPath, 'utf-8'));
if (!tsconfig.compilerOptions || !tsconfig.compilerOptions.paths)
return {};
const tsconfigDir = path.dirname(fsPath);
const baseUrl = tsconfig.compilerOptions.baseUrl || '.';
const baseDir = path.resolve(tsconfigDir, baseUrl);
const result = {};
for (const [alias, targets] of Object.entries(tsconfig.compilerOptions.paths)) {
const normalizedAlias = alias.replace(/\/\*$/, '');
result[normalizedAlias] = targets.map((t) => {
const targetPath = t.replace(/\/\*$/, '');
return path.resolve(baseDir, targetPath);
});
}
return result;
}
catch (e) {
debug_logger_1.logger.warn(`无法解析 tsconfig.json 以加载别名: ${e.message}`);
return {};
}
}
/**
* 合并 tsconfig 与 mp-lens.config.* 的 aliases 配置,tsconfig 优先级较低
*/
async function loadMergedAliases(projectRoot) {
const fileConfig = await config_loader_1.ConfigLoader.loadConfig(undefined, projectRoot);
const aliasesFromTsConfig = loadAliasesFromTsConfig(projectRoot);
const merged = {
...aliasesFromTsConfig,
...((fileConfig === null || fileConfig === void 0 ? void 0 : fileConfig.aliases) || {}),
};
if (Object.keys(merged).length > 0) {
debug_logger_1.logger.debug('已加载并合并别名配置:', merged);
}
return merged;
}
//# sourceMappingURL=alias-loader.js.map