summary refs log tree commit diff
path: root/bundle
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-07 18:21:01 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-07 18:21:01 +0200
commit9bfee45811b1e0668d4bf7149d2972a42b2bafee (patch)
tree8007bad882b62fd726875e69767f0622adc233ac /bundle
parentCompiler test (diff)
downloadserver-9bfee45811b1e0668d4bf7149d2972a42b2bafee.tar.xz
:zap: fast build script
Diffstat (limited to 'bundle')
-rw-r--r--bundle/scripts/build.js37
-rw-r--r--bundle/src/build.js18
2 files changed, 37 insertions, 18 deletions
diff --git a/bundle/scripts/build.js b/bundle/scripts/build.js
new file mode 100644
index 00000000..c5f9149c
--- /dev/null
+++ b/bundle/scripts/build.js
@@ -0,0 +1,37 @@
+const { spawn } = require("child_process");
+const path = require("path");
+const { performance } = require("perf_hooks");
+
+let parts = "util,api,cdn,gateway,bundle".split(",");
+
+// 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,
+		env: process.env,
+		shell: true,
+	});
+	function log(data) {
+		console.log(`[${element}]`.padEnd(10, " ") + data.toString().slice(0, -1));
+	}
+	child.stdout.on("data", log);
+	child.stderr.on("data", log);
+	child.on("error", (err) => console.error(element, err));
+	return child;
+}
+
+// util needs to be compiled first as the others require it
+
+const start = performance.now();
+
+for (const part of parts) {
+	buildPackage(path.join(__dirname, "..", "..", part));
+}
+
+process.on("exit", () => {
+	console.log("[Build]   took " + Math.round(performance.now() - start) + "ms");
+});
diff --git a/bundle/src/build.js b/bundle/src/build.js
deleted file mode 100644
index b893d5ee..00000000
--- a/bundle/src/build.js
+++ /dev/null
@@ -1,18 +0,0 @@
-const { exec, spawn } = require("child_process");
-const { exitCode } = require("process");
-
-let parts = "api,cdn,gateway,util,bundle".split(",");
-parts.forEach(element => {
-    // exec(`npm --prefix ../${element} run build`, (error, stdout, stderr) => {
-    //     if (error) {
-    //         console.log(`error: ${error.message}`);
-    //         return;
-    //     }
-    //     if (stderr) {
-    //         console.log(`stderr: ${stderr}`);
-    //         return;
-    //     }
-    //     console.log(`stdout: ${stdout}`);
-    // });
-    spawn("npm", ["run", "build"], {cwd: `../${element}`});
-});
\ No newline at end of file