scripts/sassy.js (49 lines of code) (raw):

import { createRequire } from "module"; import * as fs from 'fs'; import { fileURLToPath } from 'url'; import * as sass from 'sass' //https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/javascript_s3_code_examples.html const require = createRequire(import.meta.url); const path = require('path'); const mime = require('mime-types') const timer = ms => new Promise(res => setTimeout(res, ms)) const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const origin = path.join(__dirname, "..", "styles/chartcss") const destination = path.join(__dirname, "..", "public/chartcss") const filePaths = []; const blacklist = [".DS_Store"] ;(async ()=>{ let filepaths = await getFilePaths(origin) for await (const filepath of filepaths) { let extension = checkFile(filepath) let mimeType = mime.lookup(extension) let filename = filepath.split("/").pop() let prefix = filename.substring(0, filename.indexOf(".")); const compressed = sass.compile(filepath, {style: "compressed"}); let output = await fs.writeFileSync(`${destination}/${prefix}.css`, compressed.css); } })() async function getFilePaths(dir) { await fs.readdirSync(dir).forEach(function (name) { const filePath = path.join(dir, name); const stat = fs.statSync(filePath); if (stat.isFile()) { if (!contains(blacklist, name)) { //console.log() filePaths.push(filePath); } } else if (stat.isDirectory()) { getFilePaths(filePath); } }) return filePaths }; function contains(a, b) { // array matches if (Array.isArray(b)) { return b.some(x => a.indexOf(x) > -1); } // string match return a.indexOf(b) > -1; } function checkFile(file) { var extension = file.substr((file.lastIndexOf('.') +1)); return extension }