Files
TankIC/3DTank/tools/build_info.js
T
TermiNexus fd0dffe31b feat(bundle): 迁移到新版 main.7cfa4058.js(重做拆分 + 移植 7 处针对性修改)
- 拆分:tools/split.js 重切新版(1347 模块 / 126 代码模块),主文件 main.7cfa4058.js,语法验证通过

- 修复 split.js 内自动刷新拦截的 \\n 转义:它在模板字符串里,必须写 \\\\n,否则生成的主文件字符串断行、语法报错

- 符号映射:map_symbols.js 对齐旧→新(qyr→ryz、w187→c18o、z4t→jtn、vgt→rkt、Bmt→Ezt、Qjt→Fjt、txt→Gjt、k15b→s15n、azi_1→vzr_1…)

- 移植 7 处针对性修改:炮塔摆头不回弹(vSt.ryz)、摆头不过冲(case 0)、精准跟手(case 1/2)、悬浮底盘 raw 两级(Ezt.n36 + Zmt 实际速度)、电磁炮蓄力时长(jtn.c18o)

- 重新打包 unpacked.pack.json(127 文件 / 版本 96833eb2b0cf8909)
2026-10-16 14:20:15 +08:00

27 lines
1.3 KiB
JavaScript

// build_info.js - 打印一个 webpack 客户端 bundle 的构建元信息
// 用法: node build_info.js <bundle.js> [more.js ...]
// 输出: 字节数 / 模块数 / publicPath / 入口 / sentry dsn / release / environment / 版本相关常量
const fs = require('fs');
const path = require('path');
const crypto = require('crypto');
const Grab = (Text, Re) => {
const M = Text.match(Re);
return M ? (M[1] !== undefined ? M[1] : M[0]) : '-';
};
for (const File of process.argv.slice(2)) {
const Buf = fs.readFileSync(File);
const Text = Buf.toString('latin1');
console.log('== ' + path.basename(File) + ' ==');
console.log(' bytes = ' + Buf.length);
console.log(' sha256 = ' + crypto.createHash('sha256').update(Buf).digest('hex'));
console.log(' modules = ' + (Text.match(/(\d{3,6}):(?:\(|function)/g) || []).length);
console.log(' publicPath = ' + Grab(Text, /__webpack_require__\.p\s*=\s*"([^"]*)"/));
console.log(' entry = ' + Grab(Text, /__webpack_require__\((\d+)\);?\s*var\s+__webpack_exports__/));
console.log(' sentry dsn = ' + Grab(Text, /dsn\s*=\s*"([^"]+)"/));
console.log(' release = ' + Grab(Text, /release\s*=\s*"([^"]+)"/));
console.log(' environment = ' + Grab(Text, /environment\s*=\s*"([^"]+)"/));
console.log(' sourceMappingURL = ' + Grab(Text, /sourceMappingURL=([^\s"'*]+)/));
}