1 | const chalk = require("chalk");
|
2 | const program = require("commander");
|
3 | const microbundle = require("microbundle");
|
4 |
|
5 | const stdout = console.log.bind(console);
|
6 | const stderr = console.error.bind(console);
|
7 |
|
8 | function logError(err) {
|
9 | const error = err.error || err;
|
10 | const description = `${error.name ? error.name + ": " : ""}${error.message || error}`;
|
11 | const message = error.plugin ? `(${error.plugin} plugin) ${description}` : description;
|
12 |
|
13 | stderr(chalk.bold.red(message));
|
14 |
|
15 | if (error.loc) {
|
16 | stderr();
|
17 | stderr(`at ${error.loc.file}:${error.loc.line}:${error.loc.column}`);
|
18 | }
|
19 |
|
20 | if (error.frame) {
|
21 | stderr();
|
22 | stderr(chalk.dim(error.frame));
|
23 | } else if (err.stack) {
|
24 | const headlessStack = error.stack.replace(message, "");
|
25 | stderr(chalk.dim(headlessStack));
|
26 | }
|
27 |
|
28 | stderr();
|
29 | }
|
30 |
|
31 | program
|
32 | .option("-u, --umd <name>", "Specify name exposed in UMD builds")
|
33 | .option("-o, --output <folder>", "Directory to place build files into")
|
34 | .parse(process.argv);
|
35 |
|
36 | const type = program.args[0] || "module";
|
37 |
|
38 | const opts = {
|
39 | name: program.umd,
|
40 | output: program.output,
|
41 | format: "es,cjs,umd",
|
42 | cwd: ".",
|
43 | target: "node",
|
44 | compress: true,
|
45 | sourcemap: true,
|
46 | raw: false,
|
47 | };
|
48 |
|
49 | if (type === "module") {
|
50 | microbundle(opts)
|
51 | .then(output => {
|
52 | if (output != null) stdout(output);
|
53 | if (!opts.watch) process.exit(0);
|
54 | })
|
55 | .catch(err => {
|
56 | process.exitCode = (typeof err.code === "number" && err.code) || 1;
|
57 | logError(err);
|
58 | process.exit();
|
59 | });
|
60 | }
|