njzscloud-dispose-web/plugin/color-process.ts

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