one-dark/build-theme.js

84 lines
2.0 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* {}
* @author yutent<yutent.io@gmail.com>
* @date 2022/05/05 11:21:01
*/
import scss from '@bytedo/sass'
import fs from 'iofs'
import { parse } from 'path'
import { execSync } from 'child_process'
import chokidar from 'chokidar'
import chalk from 'chalk'
const CINNAMON_SCSS = './cinnamon/sass/cinnamon.scss'
const CINNAMON_STYLE = './cinnamon/cinnamon.css'
const GTK3_SCSS = './gtk-3.0/sass/gtk.scss'
const GTK3_STYLE = './gtk-3.0/gtk.css'
// const GTK3_2_SCSS = './gtk-3.20/gtk.scss'
// const GTK3_2_STYLE = './gtk-3.20/gtk.css'
function render(file) {
try {
return scss.renderSync({
file,
indentType: 'space',
indentWidth: 2
}).css
} catch (err) {
console.log(err)
}
}
/*=======================================================*/
/*===== ===*/
/*=======================================================*/
let ready = false
let timer = null
chokidar
.watch('./')
.on('all', (act, file) => {
if (!ready) {
return
}
if (act === 'add' || act === 'change') {
let { ext } = parse(file)
if (ext === '.scss') {
clearTimeout(timer)
timer = setTimeout(_ => {
console.log('更新 Cinnamon 样式……')
{
let style = render(CINNAMON_SCSS)
fs.echo(style, CINNAMON_STYLE)
}
console.log('更新 Cinnamon 完成!!!')
console.log('更新 Gtk3 样式……')
{
let style = render(GTK3_SCSS)
fs.echo(style, GTK3_STYLE)
}
// {
// let style = render(GTK3_2_SCSS)
// fs.echo(style, GTK3_2_STYLE)
// }
console.log('更新 Gtk3 完成!!!')
console.log()
// execSync('bash ./update-theme.sh', {
// stdio: [process.stdin, process.stdout, process.stdout]
// })
}, 1000)
}
}
})
.on('ready', () => {
ready = true
console.log(chalk.red('预处理完成,监听文件变化中,请勿关闭本窗口...'))
})
Cinnamon 主题 (版本 >= 5.2)
CSS 38.8%
SCSS 34.1%
C 26.4%
JavaScript 0.4%
Shell 0.3%