UNPKG

bkb

Version:

An Unopinionated JavaScript Framework for Front-end Applications.

60 lines (51 loc) 1.74 kB
const { promisify } = require("util") const fs = require("fs") const path = require("path") const rollup = require("rollup") const uglify = require("uglify-es") const readFile = promisify(fs.readFile) const writeFile = promisify(fs.writeFile) const bundleName = "bkb" const srcPath = path.join(__dirname, "..", "src") const compiledPath = path.join(__dirname, "compiled") const distNpmPath = path.join(__dirname, "..") async function build() { let bundle = await rollup.rollup({ input: path.join(compiledPath, "index.js") }) let { output } = await bundle.generate({ format: "es", sourcemap: false }) let minified = uglify.minify( { "bkb.js": output[0].code }, { toplevel: true } ) if (minified.error) throw minified.error await writeFile(path.join(distNpmPath, `${bundleName}.min.js`), minified.code) await writeFile(path.join(distNpmPath, `${bundleName}.d.ts`), await makeDefinitionsCode()) } async function makeDefinitionsCode() { let defs = [ "// -- Usage definitions --", removeLocalImportsExports((await readFile(path.join(srcPath, "exported-definitions.d.ts"), "utf-8")).trim()), "// -- Entry point definitions --", removeSemicolons( removeLocalImportsExports((await readFile(path.join(compiledPath, "index.d.ts"), "utf-8")).trim()), ) ] return defs.join("\n\n") } function removeLocalImportsExports(code) { let localImportExport = /^\s*(import|export) .* from "\.\/.*"\s*;?\s*$/ return code.split("\n").filter(line => { return !localImportExport.test(line) }).join("\n").trim() } function removeSemicolons(code) { return code.replace(/;/g, "") } build().then(() => { console.log("done") }, err => console.log(err.message, err.stack))