Skip to content

Environment‐variabler

Joacim D. Sveen edited this page Jun 10, 2024 · 3 revisions

Environment-variabler

Folk-prosjektet har to .env filer som man vil forholde seg til:

  • ./apps/web/.env
  • ./apps/server/.env (denne er kun nødvendig for lokal kjøring)

Web

.env

Denne filen har 4 pre-definerte variabler i seg relatert til REACT-applikasjonen + en siste variabel som blir satt i GitHub Action workflows.

REACT_APP_ENV

REACT_APP_ENV er variabelen som blir lagt til i .env fra GitHub Action-workflow. Denne ble laget for å ha en variabel som kan brukes for å skille mellom dev og prod. Det finnes en variabel NODE_ENV, som man kan nå med process.env.NODE_ENV. Problemet med denne var at verdien for både https://folk.knowit.no/ og https://dev.folk.knowit.no/ var production, som gjorde at man ikke kunne bruke den til å skille hvilke variabler for en config som skulle bli brukt.

defineConfig()

Under ./apps/web/src/config finner man håndtering av miljø-spesifikke variabler for diverse configurering. I første omgang er det kun for Amplify. Hvilken config som brukes blir da avgjort av _REACT_APP_ENV.

Dersom man ønsker å legge til nye variabler som skal brukes i en config, så kan man legge variablene inn i de respektive funksjonene under ../config/envs. Dette er funksjoner som returnerer et JSON-object med variablene. For å opprettholde typekontroll, så settes typen for de nye variablene i ../config/types.ts. Det er ikke laget med fallback verdier i bakhånd, så verdiene som ligger i det ene miljøet må også finnes for de andre.

Når man skal bruke disse variablene importeres de i filen som tar de i bruk slik som dette import { appConfig } from './config'

NB! Secrets eller andre hemmelige verdier bør ikke håndteres i denne løsningen.

Denne måten å forholde seg til miljø-spesifikke variabler, ble laget i henhold til denne lenken:

Best Practices for Handling Per-Environment Configuration in Your JS/TS Applications.

Server

.env

Bruken av denne filen kan lese mer om her: Server.