UNPKG

siteslimmer

Version:

A tool to optimize built files including HTML, CSS, JS, and fonts.

40 lines (29 loc) 952 B
import { promises as fs } from 'fs' import path from 'path' import { createRequire } from 'module' const require = createRequire(import.meta.url) const subsetFont = require('subset-font') export const subsetFontFile = async (filePath, text) => { const fontData = await fs.readFile(filePath) const subsettedFont = await subsetFont(fontData, text, { formats: [path.extname(filePath).slice(1)], }) const originalSize = fontData.length const newSize = subsettedFont.length let savings = 0 if (newSize < originalSize) { await fs.writeFile(filePath, subsettedFont) savings = originalSize - newSize } return { originalSize, newSize, savings } } export const getUniqueCharactersFromFiles = async (filePaths) => { let uniqueChars = new Set() for (const filePath of filePaths) { const data = await fs.readFile(filePath, 'utf8') for (const char of data) { uniqueChars.add(char) } } return Array.from(uniqueChars).join('') }