zsy-recycling-supervision-a.../plugin/iconfont-process.ts

38 lines
1020 B
TypeScript

import fs from 'fs'
interface IconfontJson {
font_family: string;
css_prefix_text: string;
glyphs: {
icon_id: string
font_class: string
unicode: string
name: string
}[];
}
export default function iconfontProcess(outPath: string) {
return function (content: string) {
const json = JSON.parse(content) as IconfontJson
const names = json.glyphs.map(glyph => glyph.font_class)
const dtsFile = outPath + '/iconfont.d.ts'
console.log('正在生成文件:', dtsFile)
const dts = `export {}
declare global {
namespace IconfontTypes {
type name = ${names.map(name => `'${name}'`).join('\n | ')}
}
}
`
fs.writeFileSync(dtsFile, dts, {encoding: 'utf-8'})
const tsFile = outPath + '/icons.ts'
const ts = `export default reactive([${'\n ' + names.map(name => `{name: '${name}'}`).join(',\n ') + '\n'}])`
console.log('正在生成文件:', tsFile)
fs.writeFileSync(tsFile, ts, {encoding: 'utf-8'})
console.log('文件生成完成')
}
}