UNPKG

ts-to-html

Version:

TS and SASS compiler for a HTML with live preview

59 lines (58 loc) 2.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.compileAll = exports.compileSassFile = exports.compileSASS = exports.compileTS = void 0; const node_fs_1 = require("node:fs"); const node_path_1 = require("node:path"); const autoprefixer_1 = __importDefault(require("autoprefixer")); const postcss_1 = __importDefault(require("postcss")); const sass_1 = require("sass"); const webpack_1 = require("webpack"); const webpack_2 = __importDefault(require("../config/webpack")); const log_1 = require("./log"); const compileTS = (config = webpack_2.default) => new Promise((resolve, reject) => { const compiler = (0, webpack_1.webpack)(config); compiler.run((err, stats) => { if (err) reject(err); resolve(stats?.toString({ colors: true })); }); }); exports.compileTS = compileTS; const compileSASS = (...files) => { const paths = files.flat(); const result = []; for (const file of paths) { try { result.push({ file, css: (0, sass_1.compile)(file, { style: "compressed" }).css }); } catch (error) { result.push({ error }); } } return result; }; exports.compileSASS = compileSASS; const compileSassFile = async (input, minified = false) => { // prefix and compile CSS const { css } = await (0, postcss_1.default)([autoprefixer_1.default]).process((0, sass_1.compile)(input, { style: minified ? "compressed" : "expanded" }).css, { from: undefined }); // Return CSS return css; }; exports.compileSassFile = compileSassFile; const compileAll = async () => { (0, log_1.clearAndLog)("Compiling...".yellow); // Compile TS await (0, exports.compileTS)(); // Get SASS files const dir = (0, node_fs_1.readdirSync)((0, node_path_1.resolve)(process.cwd(), "public")).map(e => (0, node_path_1.resolve)(process.cwd(), "public", e)); const sassFiles = dir.filter(e => e.endsWith('.scss')); // Compile SASS for (const file of sassFiles) { const css = await (0, exports.compileSassFile)(file); (0, node_fs_1.writeFileSync)(file.replace(/\.scss$/, '.css'), css); } }; exports.compileAll = compileAll;