Files
oled-nnw/uno.config.ts
2023-05-04 21:56:33 +08:00

66 lines
1.4 KiB
TypeScript

import fs from 'node:fs'
import { defineConfig, presetAttributify, presetIcons, presetTypography, presetUno } from 'unocss'
import { ARTICLE_TEXT, DIRECTORY_NAME } from './constant'
function getMainCss() {
const env = process.env.NODE_ENV
const input = fs.readFileSync('main.css', 'utf8')
if (env === 'development')
return input
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
const CleanCSS = require('clean-css')
return new CleanCSS().minify(input).styles
}
export default defineConfig({
cli: {
entry: {
patterns: [`${DIRECTORY_NAME}/template.html`],
outFile: `${DIRECTORY_NAME}/stylesheet.css`,
},
},
shortcuts: [
[/^(.*)Text$/, ([,c]) => `text-${ARTICLE_TEXT[c]}`],
],
theme: {
maxWidth: {
prose: '80ch',
},
fontFamily: {
sans: ['ui-sans-serif', 'system-ui'],
serif: ['ui-serif', 'Georgia'],
mono: ['ui-monospace', 'SFMono-Regular'],
display: ['ui-sans-serif'],
body: ['ui-sans-serif'],
},
},
presets: [
presetUno({
dark: 'media',
}),
presetAttributify(),
presetIcons({
scale: 1.2,
}),
presetTypography({
cssExtend: {
blockquote: {
'font-style': 'none',
},
},
}),
],
preflights: [
{
layer: 'my-style',
getCSS: () => getMainCss(),
},
],
safelist: [...Object.keys(ARTICLE_TEXT).map(i => `${i}Text`)],
})