diff --git a/bundle/scripts/build.js b/bundle/scripts/build.js
index c5f9149c..ba559ecf 100644
--- a/bundle/scripts/build.js
+++ b/bundle/scripts/build.js
@@ -1,37 +1,70 @@
const { spawn } = require("child_process");
const path = require("path");
const { performance } = require("perf_hooks");
+const fs = require("fs");
+const esbuildPluginTsc = require("esbuild-plugin-tsc");
-let parts = "util,api,cdn,gateway,bundle".split(",");
+let parts = "api,cdn,gateway,bundle".split(",");
+const tscBin = path.join(__dirname, "..", "..", "util", "node_modules", "typescript", "bin", "tsc");
+const swcBin = path.join(__dirname, "..", "..", "util", "node_modules", "@swc", "cli", "bin", "swc");
// because npm run is slow we directly get the build script of the package.json script
function buildPackage(dir) {
const element = path.basename(dir);
- const swcBin = path.join(dir, "node_modules", "@swc", "cli", "lib", "swc", "index.js");
- const child = spawn("node", `${swcBin} src --out-dir dist --sync`.split(" "), {
- cwd: dir,
+ require("esbuild").build({
+ entryPoints: walk(path.join(dir, "src")),
+ bundle: false,
+ outdir: path.join(dir, "dist"),
+ target: "es2021",
+ format: "cjs",
+ plugins: [esbuildPluginTsc({})],
+ keepNames: true,
+ });
+}
+
+function util() {
+ // const child = spawn("node", `${swcBin} src --out-dir dist --sync`.split(" "), {
+ const child = spawn("node", `${tscBin} -b .`.split(" "), {
+ cwd: path.join(__dirname, "..", "..", "util"),
env: process.env,
shell: true,
});
function log(data) {
- console.log(`[${element}]`.padEnd(10, " ") + data.toString().slice(0, -1));
+ console.log(`[util] ` + data.toString().slice(0, -1));
}
child.stdout.on("data", log);
child.stderr.on("data", log);
- child.on("error", (err) => console.error(element, err));
+ child.on("error", (err) => console.error("util", err));
return child;
}
-// util needs to be compiled first as the others require it
-
const start = performance.now();
+console.log("[Build] starting ...");
+util();
for (const part of parts) {
buildPackage(path.join(__dirname, "..", "..", part));
}
process.on("exit", () => {
- console.log("[Build] took " + Math.round(performance.now() - start) + "ms");
+ console.log("[Build] took " + Math.round(performance.now() - start) + "ms");
});
+
+function walk(dir) {
+ var results = [];
+ var list = fs.readdirSync(dir);
+ list.forEach(function (file) {
+ file = dir + "/" + file;
+ var stat = fs.statSync(file);
+ if (stat && stat.isDirectory()) {
+ /* Recurse into a subdirectory */
+ results = results.concat(walk(file));
+ } else if (file.endsWith(".ts")) {
+ /* Is a file */
+ results.push(file);
+ }
+ });
+ return results;
+}
|