Precise DOM morphing
morphing
typescript
dom
1import { build } from "bun"
2import { $ } from "bun"
3import { gzipSync } from "zlib"
4import { statSync, readFileSync } from "fs"
5
6// Build and minify with Bun
7await build({
8 entrypoints: ["./src/morphlex.ts"],
9 outdir: "./dist",
10 minify: true,
11 sourcemap: "external",
12 naming: "[dir]/[name].min.[ext]",
13 target: "browser",
14})
15
16// Generate TypeScript declarations (skip lib check to avoid node type errors)
17await $`tsgo --emitDeclarationOnly --declaration --outDir dist --skipLibCheck`
18
19// Calculate and display file sizes
20const minifiedPath = "./dist/morphlex.min.js"
21const minifiedSize = statSync(minifiedPath).size
22const minifiedContent = readFileSync(minifiedPath)
23const gzippedSize = gzipSync(new Uint8Array(minifiedContent)).length
24
25console.log("Build complete")
26console.log(`Minified size: ${(minifiedSize / 1024).toFixed(2)} KB`)
27console.log(`Gzipped size: ${(gzippedSize / 1024).toFixed(2)} KB`)