1
0
Fork 0
tsgames/build/imagePlugin.ts

31 lines
964 B
TypeScript

import { plugin, type BunPlugin } from "bun";
const imagePlugin: BunPlugin = {
name: "Image loader",
async setup(build) {
build.onLoad({ filter: /\.(png|jpe?g)$/ }, async (args) => {
const arrayBuffer = await Bun.file(args.path).arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
const src = `data:;base64,${buffer.toString('base64')}`;
return {
contents: `
const img = new Image();
const promise = new Promise((resolve, reject) => {
img.onload = resolve;
img.onerror = reject;
});
img.src = (${JSON.stringify(src)});
await promise;
export default img;
`,
loader: 'js',
};
});
}
};
plugin(imagePlugin);
export default imagePlugin;