Files

35 lines
1.2 KiB
TypeScript

import { execSync } from 'node:child_process'
import { copyFileSync, mkdirSync, rmSync, statSync } from 'node:fs'
import { resolve } from 'node:path'
const root = resolve(import.meta.dirname, '..')
const skillName = 'cook'
const skillDir = resolve(root, 'skills', skillName)
const skillsDir = resolve(root, 'skills')
const outputPath = resolve(skillsDir, `${skillName}.zip`)
// 需要打包的数据文件(供 Fallback 使用,CLI 不可用时 AI 直接读取)
const dataFiles = [
'recipe.csv',
'incompatible-foods.csv',
]
const dataSourceDir = resolve(root, 'packages/data')
const dataTargetDir = resolve(skillDir, 'data')
// 1. 复制数据文件到 skills/cook/data/
mkdirSync(dataTargetDir, { recursive: true })
for (const file of dataFiles) {
copyFileSync(resolve(dataSourceDir, file), resolve(dataTargetDir, file))
}
// 2. 打包(保留目录结构)
mkdirSync(skillsDir, { recursive: true })
execSync(`zip -r "${outputPath}" ${skillName}`, { cwd: skillsDir, stdio: 'ignore' })
// 3. 清理临时复制的数据目录
rmSync(dataTargetDir, { recursive: true, force: true })
const size = (statSync(outputPath).size / 1024).toFixed(1)
console.log(`✅ Packed skills/${skillName}/ → skills/${skillName}.zip (${size} KB)`)