Lewati ke konten

Environment Variables

Bosia memuat variabel lingkungan dari file .env secara berurutan (yang belakangan menimpa yang sebelumnya):

  1. .env
  2. .env.local
  3. .env.[mode] (misalnya .env.development, .env.production)
  4. .env.[mode].local

Variabel lingkungan sistem selalu memiliki prioritas tertinggi — file .env tidak pernah menimpa variabel sistem yang sudah ada.

Nama variabel mengontrol di mana dan kapan variabel tersebut tersedia:

PrefixClientServerWaktuContoh
PUBLIC_STATIC_YaYaBuild-timePUBLIC_STATIC_APP_NAME
PUBLIC_YaYaRuntimePUBLIC_API_URL
STATIC_TidakYaBuild-timeSTATIC_BUILD_ID
(tanpa prefix)TidakYaRuntimeDATABASE_URL
  • Variabel Build-time disematkan saat bosia build — mengubahnya memerlukan build ulang
  • Variabel Runtime dibaca dari process.env pada setiap request
  • Variabel Client diekspos secara aman ke browser; variabel Server tidak pernah meninggalkan server

Impor dari modul virtual $env:

import { PUBLIC_API_URL, DATABASE_URL } from "$env";

Hanya variabel yang dideklarasikan dalam file .env Anda yang tersedia melalui impor ini. Modul ini bersifat type-safe dengan deklarasi tipe yang dibuat secara otomatis.

Variabel-variabel ini dicadangkan oleh Bosia dan mengontrol perilaku framework:

VariabelDefaultDeskripsi
PORT9000Port server
NODE_ENVdevelopment atau production
BODY_SIZE_LIMIT512KUkuran maksimal body request (mendukung K, M, G, Infinity)
LOAD_TIMEOUTTimeout untuk load() dalam ms
METADATA_TIMEOUTTimeout untuk metadata() dalam ms
PRERENDER_TIMEOUTTimeout untuk fetch prerender dalam ms
CSRF_ALLOWED_ORIGINSOrigin yang diizinkan untuk CSRF, dipisahkan koma
CORS_ALLOWED_ORIGINSOrigin yang diizinkan untuk CORS, dipisahkan koma
CORS_ALLOWED_METHODSMethod yang diizinkan, dipisahkan koma
CORS_ALLOWED_HEADERSHeader yang diizinkan, dipisahkan koma
CORS_EXPOSED_HEADERSHeader yang diekspos, dipisahkan koma
CORS_CREDENTIALSfalseSetel ke "true" untuk mengizinkan credentials
CORS_MAX_AGE86400Durasi cache preflight dalam detik

Variabel framework diakses melalui process.env secara langsung, bukan melalui $env.

Terminal window
# Public — available on client and server at runtime
PUBLIC_API_URL=https://api.example.com
PUBLIC_APP_NAME=My App
# Public static — inlined at build time
PUBLIC_STATIC_VERSION=1.0.0
# Private — server only
DATABASE_URL=postgres://localhost:5432/mydb
API_SECRET=sk_live_abc123
# Framework config
PORT=3000
BODY_SIZE_LIMIT=1M
CORS_ALLOWED_ORIGINS=https://app.example.com

Hanya variabel PUBLIC_* yang dideklarasikan dalam file .env yang dikirim ke client. Variabel yang hanya disetel sebagai variabel lingkungan sistem (tidak ada di file .env) tidak pernah diekspos ke browser, meskipun memiliki prefix PUBLIC_.