#!/usr/bin/env node /** * build-tokens.mjs — 设计令牌同源生成器(usercenter) * * 唯一真相来源是仓库根的 `design/prototype/tokens.css`。 * 本脚本把它原样读入,仅删除 Google Fonts @import 行后写入 * `public/colors_and_type.css`(usercenter 通过 引入此文件)。 * * 与 web/website/scripts/build-tokens.mjs 逻辑一致,目标路径不同。 * * 容灾:若源文件不存在,保留已提交的 public/colors_and_type.css,构建继续。 */ import { readFileSync, writeFileSync, existsSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, resolve } from 'node:path'; const __dirname = dirname(fileURLToPath(import.meta.url)); const SRC = resolve(__dirname, '../../../design/prototype/tokens.css'); const OUT = resolve(__dirname, '../public/colors_and_type.css'); const BANNER = '/* AUTO-GENERATED — 勿手改。源: design/prototype/tokens.css。' + '生成器: web/usercenter/scripts/build-tokens.mjs。仅移除第三方 Google Fonts @import。 */\n'; if (!existsSync(SRC)) { if (existsSync(OUT)) { console.log('[build-tokens] 源 colors_and_type.css 缺失,沿用已提交的 public/colors_and_type.css。'); process.exit(0); } console.error('[build-tokens] 致命:找不到源 token 文件,也没有已生成文件:', SRC); process.exit(1); } const raw = readFileSync(SRC, 'utf8'); const stripped = raw .split('\n') .filter((line) => !/@import\s+url\(['"]?https?:\/\/fonts\.googleapis\.com/i.test(line)) .join('\n'); writeFileSync(OUT, BANNER + stripped, 'utf8'); console.log('[build-tokens] ✅ 已生成', OUT, `(${stripped.length} 字节,源自 design/prototype/tokens.css)`);