59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import fs from 'fs'
|
|
import path from 'node:path'
|
|
import { colorSchemesConfig } from './color-schemes-config.ts'
|
|
|
|
const targetFile = path.resolve(__dirname, './color-schemes-config.ts')
|
|
|
|
function createStyl() {
|
|
const stylusFile = path.resolve(__dirname, '../src/assets/stylus/color.styl')
|
|
console.log('正在生成文件:', stylusFile)
|
|
let colorSchemes = []
|
|
for (let k1 in colorSchemesConfig) {
|
|
let colors = []
|
|
// @ts-ignore
|
|
for (let k2 in colorSchemesConfig[k1]) {
|
|
// @ts-ignore
|
|
colors.push(`${k2}: ${colorSchemesConfig[k1][k2]}`)
|
|
}
|
|
colorSchemes.push(` ${k1}: {\n ${colors.join(',\n ')}\n }`)
|
|
}
|
|
const stylContent = `colorSchemes = {\n${colorSchemes.join(',\n')}\n}
|
|
|
|
`
|
|
fs.writeFileSync(stylusFile, stylContent, {encoding: 'utf-8'})
|
|
}
|
|
|
|
function createTs() {
|
|
const tsFile = path.resolve(__dirname, '../src/common/utils/color-schemes.ts')
|
|
console.log('正在生成文件:', tsFile)
|
|
let colorSchemes = []
|
|
for (let k1 in colorSchemesConfig) {
|
|
let colors = []
|
|
// @ts-ignore
|
|
for (let k2 in colorSchemesConfig[k1]) {
|
|
// @ts-ignore
|
|
colors.push(`${k2}: '${colorSchemesConfig[k1][k2]}'`)
|
|
}
|
|
colorSchemes.push(` ${k1}: {\n ${colors.join(',\n ')}\n }`)
|
|
}
|
|
const tsContent = `export const colorSchemes = {\n${colorSchemes.join(',\n')}\n} as const
|
|
|
|
export type ColorSchemeType = keyof typeof colorSchemes
|
|
|
|
`
|
|
fs.writeFileSync(tsFile, tsContent, {encoding: 'utf-8'})
|
|
}
|
|
|
|
/**
|
|
* 色系处理器
|
|
*/
|
|
export default {
|
|
process(_: VitePluginTypes.FileWatcherProcessParam) {
|
|
createTs()
|
|
createStyl()
|
|
},
|
|
isAccept(data: VitePluginTypes.FileWatcherAcceptParam) {
|
|
return data.event === 'change' && !data.isDir && data.filePath === targetFile
|
|
},
|
|
} as VitePluginTypes.FileWatcherOptions
|