-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.ts
64 lines (53 loc) · 1.67 KB
/
build.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { BuildConfig, Target } from "bun";
import fs from "node:fs/promises";
const buildDir = "./examples/build";
{
console.log("Generating declaration file...");
const cmdAArgs: string[] = ["bun", "dts-bundle-generator", "src/asu.ts", "--out-file", `${buildDir}/asu.d.ts`, "--no-check"];
console.log(cmdAArgs.join(" "));
const cmdResult = Bun.spawnSync(cmdAArgs);
if (!cmdResult.success) {
console.error(`ERROR: DTS generation failed with exit code ${cmdResult.exitCode}`);
console.error(cmdResult.stderr.toString());
process.exit(1);
}
}
const dtsContent = await Bun.file(`${buildDir}/asu.d.ts`).text();
if (await fs.exists(buildDir)) {
await fs.rm(buildDir, {
recursive: true,
force: true,
});
}
const config: BuildConfig = {
entrypoints: ["./src/asu.ts"],
outdir: buildDir,
sourcemap: "external",
};
const targets: Target[] = [
"browser", "bun", "node",
];
console.log("Bundling...");
for (const target of targets) {
config.target = target;
config.minify = false;
config.naming = {
entry: `asu.${target}.js`,
};
let fileName = `asu.${target}.d.ts`;
await Bun.build(config);
await fs.writeFile(`${buildDir}/${fileName}`, dtsContent);
config.minify = true;
config.naming = {
entry: `asu.${target}.min.js`,
};
fileName = `asu.${target}.min.d.ts`;
await Bun.build(config);
await fs.writeFile(`${buildDir}/${fileName}`, dtsContent);
}
console.log(`Out directory: ${buildDir}`);
{
const files = await fs.readdir(buildDir);
await fs.writeFile(`./examples/bundles/files.json`, JSON.stringify(files, null, 2));
}
console.log("DONE");