From b2058840bc76f2105a7bd6468f33aca3463095d0 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Tue, 16 Jun 2026 12:20:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(rn-log):=20=E6=B7=BB=E5=8A=A0=20metro=20pl?= =?UTF-8?q?ugin=20=E5=AD=98=E6=A0=B9=20=E2=80=94=20withXuqmLog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 打 Release 包时自动包裹 Metro config,后续补全 SourceMap 上传逻辑。 --- packages/log/metro/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/log/metro/index.js diff --git a/packages/log/metro/index.js b/packages/log/metro/index.js new file mode 100644 index 0000000..9cc4a32 --- /dev/null +++ b/packages/log/metro/index.js @@ -0,0 +1,34 @@ +'use strict' + +/** + * withXuqmLog(metroConfig) + * 包裹 Metro 配置,打 Release 包时自动上传 SourceMap。 + * 当前为存根实现,后续补全 SourceMap 上传逻辑。 + */ +function withXuqmLog(metroConfig) { + return { + ...metroConfig, + serializer: { + ...metroConfig.serializer, + customSerializer: async (entryPoint, preModules, graph, options) => { + // 调用原始 serializer + const baseSerializer = metroConfig.serializer?.customSerializer + const result = baseSerializer + ? await baseSerializer(entryPoint, preModules, graph, options) + : undefined + + // 仅 Release 包上传 SourceMap(dev 模式跳过) + if (!options.dev) { + // TODO: 补全 SourceMap 上传逻辑 + // 1. 读取 .xuqmconfig 或 xuqm.config.js 获取 logApiUrl + // 2. 读取 sourceMapUrl 对应的 .map 文件 + // 3. 上传到 logApiUrl/log/v1/sourcemaps/upload + } + + return result + }, + }, + } +} + +module.exports = { withXuqmLog }