-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbun-adapter.js
43 lines (33 loc) · 1.03 KB
/
bun-adapter.js
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
import { rmSync } from "fs";
/**
* @param opts {{out:string}}
*/
export default ({ out } = { out: "build" }) => {
/** @type {import('@sveltejs/kit').Adapter} */
const adapter = {
name: "bun",
async adapt(builder) {
// Clear out the build directory
builder.rimraf(out);
builder.mkdirp(out);
const serverDir = `${out}/server`;
builder.writeServer(serverDir);
builder.writeClient(`${out}/client`);
const server = builder.getServerDirectory();
const index = await Bun.file(
`${import.meta.dirname}/bun-adapter/index.js`
).text();
const entry = `${out}/index.js`;
await Bun.write(
entry,
index
.replace("MANIFEST", `${server}/manifest.js`)
.replace("SERVER", `${server}/index.js`)
.replace("CLIENT_DIRECTORY", builder.getClientDirectory())
);
Bun.spawn(`bun build ${entry} --target bun --outdir ${out}`.split(" "));
rmSync(serverDir, { recursive: true, force: true });
},
};
return adapter;
};