Lewati ke konten

Static Serve

Package @gaman/static memungkinkan kamu melayani file statis (gambar, CSS, JS, dll) dari sebuah direktori. Package ini mendukung deteksi MIME type otomatis, pembuatan ETag, dan dukungan kompresi Brotli/Gzip.

Terminal window
npm install @gaman/static

Daftarkan middleware file statis di file bootstrap kamu menggunakan app.mount():

import { defineBootstrap } from 'gaman';
import { StaticServe } from '@gaman/static';
defineBootstrap(async (app) => {
// Melayani file dari folder 'public' (default)
app.mount(StaticServe());
// Atau dengan konfigurasi kustom
app.mount(StaticServe({
publicPath: './assets',
rewriteRequestPath: (p) => p.replace(/^\/static/, ''),
fallbackToIndexHTML: true, // SPA fallback
}));
app.mountServer({ http: 3431 });
});
OpsiTipeDefaultDeskripsi
publicPathstring"public"Path ke direktori yang akan dilayani
defaultDocumentstring"index.html"File yang akan dikembalikan jika direktori di-request
rewriteRequestPath(path: string) => stringRewrite request path (misal: hapus prefix)
fallbackToIndexHTMLbooleanfalseFallback ke index.html jika 404 (dukungan SPA)
cacheControlstringKustomisasi header Cache-Control
mimesRecord<string, string>Mapping MIME type kustom
onFound(path, ctx) => voidCallback saat file ditemukan
onNotFound(path, ctx) => voidCallback saat file tidak ditemukan
  • Kompresi Otomatis: Melayani file .br atau .gz jika ada dan browser mendukungnya.
  • ETag & 304: Pembuatan ETag otomatis untuk caching browser yang efisien.
  • Performa: Dibangun di atas Bun.file() untuk kecepatan maksimal.