#!/usr/bin/env node /* 等价回归验证(UniForge verify 工具) * 用法:node scripts/equiv-regression.js <页面路径(相对 cfc-frontend)> * 例:node scripts/equiv-regression.js pages/index-home/index.vue * * 原理:uni-app 将 uni.scss prepend 到每个页面 style。 * 取 HEAD 版与工作区版分别拼接 uni.scss 编译,hex 大小写/3-6 位归一后逐字节比对。 * 全部令牌同值映射时,产物应完全相同 → 证明零观感变化。 */ const { execSync } = require('child_process') const fs = require('fs') const path = require('path') const PAGE = process.argv[2] if (!PAGE) { console.error('用法: node scripts/equiv-regression.js <页面路径>') process.exit(2) } const ROOT = path.resolve(__dirname, '..') const REPO = path.resolve(ROOT, '..') const REL = path.relative(REPO, path.join(ROOT, PAGE)).split(path.sep).join('/') const TMP = path.join(ROOT, '.tmp_equiv') fs.mkdirSync(TMP, { recursive: true }) function extractStyle(src) { // 行首锚定(m 标志):避开脚本区 JS 字符串里的伪 style 标签 // (如 .replace(//gi, ' '),其