Skip to content

Commit 5fc8a8f

Browse files
committed
Clean up the web build
Just like the DTS build, the web build now exports functions instead of being spawned as a child process. Also, the web build no longer fails silently upon error.
1 parent 12a2867 commit 5fc8a8f

File tree

2 files changed

+52
-51
lines changed

2 files changed

+52
-51
lines changed

scripts/build-web.js

+37-36
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,43 @@
1-
import path from "path";
1+
import {dirname, join} from "path";
22
import fs from "fs";
3-
import { createRequire } from "module";
43
import { fileURLToPath } from "url";
54

6-
const dirname = path.dirname(fileURLToPath(import.meta.url));
7-
const require = createRequire(import.meta.url);
8-
const pkg = require("../package-lock.json");
5+
const __dirname = dirname(fileURLToPath(import.meta.url));
96

10-
const mainVersion = pkg.version;
11-
const binaryenVersion = pkg.dependencies.binaryen.version;
12-
const longVersion = pkg.dependencies.long.version;
7+
export function buildWeb() {
8+
const pkg = JSON.parse(fs.readFileSync(join(__dirname, "../package-lock.json")));
139

14-
const distUrl = mainVersion === "0.0.0" ? `./` : `https://cdn.jsdelivr.net/npm/assemblyscript@${mainVersion}/dist/`;
15-
const binaryenUrl = `https://cdn.jsdelivr.net/npm/binaryen@${binaryenVersion}/index.js`;
16-
const longUrl = `https://cdn.jsdelivr.net/npm/long@${longVersion}/index.js`;
17-
const importmap = {
18-
"imports": {
19-
"assemblyscript": `${distUrl}assemblyscript.js`,
20-
"assemblyscript/asc": `${distUrl}asc.js`,
21-
"binaryen": binaryenUrl,
22-
"long": longUrl
23-
}
24-
};
10+
const mainVersion = pkg.version;
11+
const binaryenVersion = pkg.dependencies.binaryen.version;
12+
const longVersion = pkg.dependencies.long.version;
13+
14+
const distUrl = mainVersion === "0.0.0" ? `./` : `https://cdn.jsdelivr.net/npm/assemblyscript@${mainVersion}/dist/`;
15+
const binaryenUrl = `https://cdn.jsdelivr.net/npm/binaryen@${binaryenVersion}/index.js`;
16+
const longUrl = `https://cdn.jsdelivr.net/npm/long@${longVersion}/index.js`;
17+
const importmap = {
18+
"imports": {
19+
"assemblyscript": `${distUrl}assemblyscript.js`,
20+
"assemblyscript/asc": `${distUrl}asc.js`,
21+
"binaryen": binaryenUrl,
22+
"long": longUrl
23+
}
24+
};
2525

26-
fs.writeFileSync(path.join(dirname, "..", "dist", "importmap.json"), `${JSON.stringify(importmap, null, 2)}
27-
`);
28-
fs.writeFileSync(path.join(dirname, "..", "dist", "web.js"), `var ASSEMBLYSCRIPT_VERSION = ${JSON.stringify(mainVersion)};
29-
var ASSEMBLYSCRIPT_IMPORTMAP = ${JSON.stringify(importmap, null, 2)};
30-
if (!document.currentScript.src.includes("noinstall")) {
31-
let elem = document.createElement("script");
32-
elem.type = "importmap";
33-
elem.text = JSON.stringify(ASSEMBLYSCRIPT_IMPORTMAP);
34-
document.head.appendChild(elem);
35-
}
36-
if (!document.currentScript.src.includes("noshim")) {
37-
let elem = document.createElement("script");
38-
elem.async = true;
39-
elem.src = "https://cdn.jsdelivr.net/npm/es-module-shims@1/dist/es-module-shims.wasm.min.js";
40-
document.head.appendChild(elem);
41-
}
42-
`);
26+
fs.writeFileSync(join(__dirname, "..", "dist", "importmap.json"), `${JSON.stringify(importmap, null, 2)}
27+
`);
28+
fs.writeFileSync(join(__dirname, "..", "dist", "web.js"), `var ASSEMBLYSCRIPT_VERSION = ${JSON.stringify(mainVersion)};
29+
var ASSEMBLYSCRIPT_IMPORTMAP = ${JSON.stringify(importmap, null, 2)};
30+
if (!document.currentScript.src.includes("noinstall")) {
31+
let elem = document.createElement("script");
32+
elem.type = "importmap";
33+
elem.text = JSON.stringify(ASSEMBLYSCRIPT_IMPORTMAP);
34+
document.head.appendChild(elem);
35+
}
36+
if (!document.currentScript.src.includes("noshim")) {
37+
let elem = document.createElement("script");
38+
elem.async = true;
39+
elem.src = "https://cdn.jsdelivr.net/npm/es-module-shims@1/dist/es-module-shims.wasm.min.js";
40+
document.head.appendChild(elem);
41+
}
42+
`);
43+
}

scripts/build.js

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import fs from "fs";
22
import path from "path";
33
import { fileURLToPath } from "url";
4-
import childProcess from "child_process";
54
import esbuild from "esbuild";
65
import { globSync } from "glob";
76
import { createRequire } from "module";
87
import { stdoutColors } from "../util/terminal.js";
98

9+
import {buildWeb} from "./build-web.js";
1010
import * as dts from "./build-dts.js";
1111

1212
const require = createRequire(import.meta.url);
@@ -175,22 +175,22 @@ const webPlugin = {
175175
setup(build) {
176176
build.onEnd(() => {
177177
const startTime = Date.now();
178-
const stdout = [];
179-
console.log(`${time()} - ${"web"} - Starting new build ...`);
180-
childProcess.spawn("node", [ "./build-web.js" ], {
181-
cwd: dirname,
182-
stdio: "pipe"
183-
}).on("data", data => {
184-
stdout.push(data.toString());
185-
}).on("error", err => {
178+
console.log(`${time()} - web - Starting new build ...`);
179+
180+
try {
181+
buildWeb();
182+
186183
const duration = Date.now() - startTime;
187-
console.log(stdout.join(""));
188-
console.log(`${time()} - ${"web"} - ${stdoutColors.red("ERROR")} (had errors, ${duration} ms)`);
189-
}).on("close", code => {
190-
if (code) return;
184+
console.log(`${time()} - web - ${stdoutColors.green("SUCCESS")} (no errors, ${duration} ms)`);
185+
process.exitCode = 0;
186+
} catch (e) {
191187
const duration = Date.now() - startTime;
192-
console.log(`${time()} - ${"web"} - ${stdoutColors.green("SUCCESS")} (no errors, ${duration} ms)`);
193-
});
188+
console.error(e);
189+
console.log(`${time()} - web - ${stdoutColors.red("ERROR")} (had errors, ${duration} ms)`);
190+
process.exitCode = 1;
191+
} finally {
192+
buildingDefinitions = false;
193+
}
194194
});
195195
}
196196
};

0 commit comments

Comments
 (0)