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.
Instalasi
Section titled “Instalasi”npm install @gaman/staticpnpm install @gaman/staticyarn install @gaman/staticbun install @gaman/staticPenggunaan
Section titled “Penggunaan”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 });});Opsi Konfigurasi
Section titled “Opsi Konfigurasi”| Opsi | Tipe | Default | Deskripsi |
|---|---|---|---|
publicPath | string | "public" | Path ke direktori yang akan dilayani |
defaultDocument | string | "index.html" | File yang akan dikembalikan jika direktori di-request |
rewriteRequestPath | (path: string) => string | — | Rewrite request path (misal: hapus prefix) |
fallbackToIndexHTML | boolean | false | Fallback ke index.html jika 404 (dukungan SPA) |
cacheControl | string | — | Kustomisasi header Cache-Control |
mimes | Record<string, string> | — | Mapping MIME type kustom |
onFound | (path, ctx) => void | — | Callback saat file ditemukan |
onNotFound | (path, ctx) => void | — | Callback saat file tidak ditemukan |
- Kompresi Otomatis: Melayani file
.bratau.gzjika ada dan browser mendukungnya. - ETag & 304: Pembuatan ETag otomatis untuk caching browser yang efisien.
- Performa: Dibangun di atas
Bun.file()untuk kecepatan maksimal.