3 const fs = require("fs")
4 const path = require("path")
5 const browserify = require("browserify")
6 const {minify} = require("terser")
8 const [sourceFile, outFile, globalName] = process.argv.slice(2)
10 const json = require(path.join(__dirname, "..", "package.json"))
11 const bundleDir = path.join(__dirname, "..", "bundle")
12 if (!fs.existsSync(bundleDir)) fs.mkdirSync(bundleDir)
14 browserify({standalone: globalName})
15 .require(path.join(__dirname, "../dist", sourceFile), {expose: sourceFile})
16 .bundle(saveAndMinify)
18 async function saveAndMinify(err, buf) {
20 console.error("browserify error:", err)
24 const bundlePath = path.join(bundleDir, outFile)
34 preamble: `/* ${json.name} ${json.version} (${globalName}): ${json.description} */`,
37 filename: outFile + ".min.js",
38 url: outFile + ".min.js.map",
42 const result = await minify(buf.toString(), opts)
44 fs.writeFileSync(bundlePath + ".bundle.js", buf)
45 fs.writeFileSync(bundlePath + ".min.js", result.code)
46 fs.writeFileSync(bundlePath + ".min.js.map", result.map)
47 if (result.warnings) result.warnings.forEach((msg) => console.warn("terser.minify warning:", msg))