PPTist/scripts/build-fonts.js
2022-12-02 10:35:09 +08:00

46 lines
1.3 KiB
JavaScript

// 自动获取 src\assets\fonts 路径下的字体文件列表,并替换相关的 SCSS 变量
/* eslint-disable no-console */
const fs = require('fs')
const path = require('path')
const assetsPath = path.join(__dirname, '../src/assets')
const fontVarPath = path.join(assetsPath, 'styles/font.scss')
const fontsPath = path.join(assetsPath, 'fonts')
const scssFontListVar = '$fontList'
const replaceSCSSVariable = (names) => {
fs.readFile(fontVarPath, 'utf-8', (errs, content) => {
if (errs) {
console.error(errs)
process.exit(1)
}
const reg = new RegExp(`(\\${scssFontListVar}:\\s*)(.*)(;.*)`, 'g')
const newContent = content.replace(reg, `$1${names}$3`)
fs.writeFile(fontVarPath, newContent, errs => {
if (errs) {
console.error(errs)
process.exit(1)
}
console.log('自动生成自定义字体列表完成')
})
})
}
fs.readdir(fontsPath, { withFileTypes: true }, (errs, files) => {
if (errs) {
console.error(errs)
process.exit(1)
}
const woff2Fonts = files.filter(({ name }) => name.endsWith('.woff2'))
const fontList = woff2Fonts.map(({ name }) => name.replace('.woff2', ''))
const names = fontList.reduce((result, name, i) => {
if (i === 0) return `'${name}'`
return `${result}, '${name}'`
}, '')
replaceSCSSVariable(names)
})