update at 2026-07-26 10:44:05
This commit is contained in:
57
scripts/check-font-assets.js
Normal file
57
scripts/check-font-assets.js
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* 校验字体清单中的每个字体文件是否存在且非空。
|
||||
*
|
||||
* 用法:node scripts/check-font-assets.js --manifest <清单路径> --root <项目根目录>
|
||||
*/
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
function readArgument(name) {
|
||||
const index = process.argv.indexOf(name)
|
||||
return index >= 0 ? process.argv[index + 1] : ''
|
||||
}
|
||||
|
||||
const manifestPath = readArgument('--manifest')
|
||||
const projectRoot = readArgument('--root') || '.'
|
||||
|
||||
if (!manifestPath) {
|
||||
console.error('用法错误:缺少 --manifest 参数')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
let manifest
|
||||
try {
|
||||
manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'))
|
||||
} catch (error) {
|
||||
console.error(`无法读取字体清单 ${manifestPath}:${error.message}`)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const items = Array.isArray(manifest) ? manifest : (manifest.items || manifest.fonts || [])
|
||||
if (!Array.isArray(items) || items.length === 0) {
|
||||
console.error(`字体清单为空:${manifestPath}`)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const missing = []
|
||||
for (const item of items) {
|
||||
const relativePath = String(item.path || '').replace(/^\/+/, '')
|
||||
const fontPath = path.resolve(projectRoot, relativePath)
|
||||
if (!relativePath || !fs.existsSync(fontPath) || fs.statSync(fontPath).size === 0) {
|
||||
missing.push(`${item.id || '未知ID'} ${item.name || '未知字体'} (${relativePath || '未配置路径'})`)
|
||||
}
|
||||
}
|
||||
|
||||
if (missing.length > 0) {
|
||||
console.error(`字体资源校验失败:缺少或为空 ${missing.length}/${items.length} 个`)
|
||||
missing.slice(0, 20).forEach((item) => console.error(`- ${item}`))
|
||||
if (missing.length > 20) {
|
||||
console.error(`- 其余 ${missing.length - 20} 个未显示`)
|
||||
}
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
console.log(`字体资源校验通过:${items.length} 个字体文件均存在且非空`)
|
||||
Reference in New Issue
Block a user