42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import fs from "node:fs/promises"
|
|
|
|
const normalFiles = await Promise.all([
|
|
fs.readdir("src/commands"),
|
|
fs.readdir("src/commands-contextmenu"),
|
|
fs.readdir("src/components/autocomplete"),
|
|
fs.readdir("src/components/buttons"),
|
|
fs.readdir("src/components/modals"),
|
|
fs.readdir("src/events/cron")
|
|
])
|
|
|
|
const eventFiles = (await fs.readdir("src/events", { recursive: true })).filter(f => f.endsWith(".ts"))
|
|
|
|
const files = [
|
|
normalFiles[0].map(f => `src/commands/${f}`),
|
|
normalFiles[1].map(f => `src/commands-contextmenu/${f}`),
|
|
normalFiles[2].map(f => `src/components/autocomplete/${f}`),
|
|
normalFiles[3].map(f => `src/components/buttons/${f}`),
|
|
normalFiles[4].map(f => `src/components/modals/${f}`),
|
|
normalFiles[5].map(f => `src/events/cron/${f}`),
|
|
eventFiles.map(f => `src/events/${f}`)
|
|
].flat()
|
|
|
|
const banner = [
|
|
"const bun__build = true",
|
|
process.env.DOCKER === "1" ? "const bun__docker = true" : null
|
|
].filter(v => typeof v === "string").join("\n")
|
|
|
|
await Bun.build({
|
|
entrypoints: ["src/index.ts", ...files],
|
|
outdir: "dist",
|
|
target: "bun",
|
|
splitting: true,
|
|
naming: {
|
|
entry: "[dir]/[name].[ext]",
|
|
chunk: "chunk/[name]-[hash].[ext]",
|
|
asset: "asset/[name]-[hash].[ext]"
|
|
},
|
|
root: "src",
|
|
banner
|
|
})
|