123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- "use strict"
- const fs = require("fs")
- const path = require("path")
- const browserify = require("browserify")
- const {minify} = require("terser")
- const [sourceFile, outFile, globalName] = process.argv.slice(2)
- const json = require(path.join(__dirname, "..", "package.json"))
- const bundleDir = path.join(__dirname, "..", "bundle")
- if (!fs.existsSync(bundleDir)) fs.mkdirSync(bundleDir)
- browserify({standalone: globalName})
- .require(path.join(__dirname, "../dist", sourceFile), {expose: sourceFile})
- .bundle(saveAndMinify)
- async function saveAndMinify(err, buf) {
- if (err) {
- console.error("browserify error:", err)
- process.exit(1)
- }
- const bundlePath = path.join(bundleDir, outFile)
- const opts = {
- ecma: 2018,
- warnings: true,
- compress: {
- pure_getters: true,
- keep_infinity: true,
- unsafe_methods: true,
- },
- format: {
- preamble: `/* ${json.name} ${json.version} (${globalName}): ${json.description} */`,
- },
- sourceMap: {
- filename: outFile + ".min.js",
- url: outFile + ".min.js.map",
- },
- }
- const result = await minify(buf.toString(), opts)
- fs.writeFileSync(bundlePath + ".bundle.js", buf)
- fs.writeFileSync(bundlePath + ".min.js", result.code)
- fs.writeFileSync(bundlePath + ".min.js.map", result.map)
- if (result.warnings) result.warnings.forEach((msg) => console.warn("terser.minify warning:", msg))
- }
|