/** * 生成小程序所需的图标和图片 * 运行: node scripts/generateImages.js */ const fs = require('fs') const path = require('path') const imagesDir = path.join(__dirname, '..', 'images') // 确保 images 目录存在 if (!fs.existsSync(imagesDir)) { fs.mkdirSync(imagesDir, { recursive: true }) } // SVG 图标定义 (48x48) const icons = { // 箭头图标 'icon-arrow': ` `, // 勾选图标 'icon-check': ` `, // 挑战图标 'icon-challenge': ` `, // 历史图标 'icon-history': ` `, // 信息图标 'icon-info': ` i `, // 订单图标 'icon-order': ` `, // 积分图标 'icon-points': ` P `, // 二维码图标 'icon-qrcode': ` `, // 排名图标 'icon-ranking': ` 2 1 3 `, // 记录图标 'icon-records': ` `, // 扫码图标 'icon-scan': ` `, // 门店图标 'icon-store': ` ` } // 空状态图片 (200x160) const emptyImages = { // 空排名 'empty-ranking': ` 暂无排名数据 `, // 空门店 'empty-store': ` 暂无门店 `, // 空比赛 'empty-match': ` VS 暂无比赛记录 `, // 空记录 'empty-records': ` 暂无记录 `, // 空商品 'empty-products': ` 暂无商品 `, // 空订单 'empty-order': ` 暂无订单 ` } // 默认图片 const defaultImages = { // 默认头像 (120x120) 'avatar-default': ` `, // 默认商品图 (200x200) 'product-default': ` ` } // 写入 SVG 文件 function writeSvgFile(name, content) { const filePath = path.join(imagesDir, `${name}.svg`) fs.writeFileSync(filePath, content.trim()) console.log(`✓ 已生成: ${name}.svg`) } // 生成所有图标 console.log('\n=== 生成图标 ===') Object.entries(icons).forEach(([name, svg]) => { writeSvgFile(name, svg) }) // 生成所有空状态图片 console.log('\n=== 生成空状态图片 ===') Object.entries(emptyImages).forEach(([name, svg]) => { writeSvgFile(name, svg) }) // 生成默认图片 console.log('\n=== 生成默认图片 ===') Object.entries(defaultImages).forEach(([name, svg]) => { writeSvgFile(name, svg) }) console.log('\n所有图片生成完成!') console.log('提示: 微信小程序支持 SVG 格式图片,可直接使用') console.log('如需 PNG 格式,可使用在线工具转换或安装 sharp 库')