[[:oktatas:web:back-end_framework:express|< Express]]
====== Beállítások tárolása ======
* **Szerző:** Sallai András
* Copyright (c) 2025, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Bevezetés =====
Az API alkalmazás beállításait tárolhatjuk .env vagy valamilyen JSON fájlban.
A .env fájl helyet használhatunk más nevet is, de ez egy általánosan használt
fájlnév. A JSON fájl valamilyen .json kiterjesztésű fájl:
* config.json
* default.json
* default_config.json
* config/default.json
* stb.
A .env fájlban szimpla változóként tartjuk nyilván a beállításokat, a JSON fájlokban
értelemszerűen JSON formátumban.
Mit tárolunk ilyen fájlokban? Az alkalmazáshoz tartozó portbeállítás, verziószám, adatbázis adatok stb.
===== Node.js projekt létrehozása =====
Hozzunk létre egy Node.js projektet:
mkdir api
cd api
npm init -y
===== .env =====
Szükségünk van a **dotenv** csomagra a .env fájl tartalmának olvasásához. Telepítsük:
npm install dotenv
Készítsünk egy .env fájlt a projekt gyökérkönyvtárában, majd vegyünk fel benne néhány változót:
NAME=Barbi
CITY=Szeged
APP_PORT=8000
import dotenv from 'dotenv'
dotenv.config();
console.log(process.env.NAME);
console.log(process.env.CITY);
A config() függvény paraméterezhető is. Debug és útvonal beállítása:
import dotenv from 'dotenv'
dotenv.config({ debug: true, path: './config/.env' });
console.log(process.env.NAME);
console.log(process.env.CITY);
===== config.json =====
A beállítások tárolhatók JSON fájlban is. A fájl neve tetszőleges. Lehet config vagy default, a kiterjesztést viszont célszerű .json-ra állítani. Egy példa a tartalomra:
{
"name": "Barbi",
"city": "Szeged",
"app": {
"port": 3000
}
}
Használjuk a beállításokat:
import { readFileSync } from 'fs'
const fileUrl = new URL('config.json', import.meta.url)
const config = JSON.parse(readFileSync(fileUrl, 'utf-8'))
console.log(config.name)
console.log(config.city)
Az URL osztály kihagyható, ha config.json fájl egy könyvtárban van az index.js állománnyal.
Itt azért alkalmaztuk, mert ez működik alkönyvtárak esetén is, például:
* '../../config/default.json'
Esetleg:
import { readFile } from 'fs/promises'
const fileUrl = new URL('config.json', import.meta.url)
const config = JSON.parse(await readFile(fileUrl, 'utf-8'))
console.log(config.name)
console.log(config.city)
console.log(config.app.port)
===== npm create sip =====
Ha a sip paranccsal készítjük el a projektet a beállítások alapértelmezetten egy JSON fájlban a következő helyen találhatók:
* config/default.json
Hozzunk létre kísérletként egy **alap** nevű projektet:
npm create sip@latest
A parancs rákérdez a projekt nevére, majd válasszuk a projekt típusának a **Express API** lehetőséget.
Az elkészített default.json fájl tartalma:
{
"app": {
"port": 8000,
"key": "",
"log": "console.log"
},
"db": {
"dialect": "sqlite",
"host": "127.0.0.1",
"name": "",
"user": "",
"pass": "",
"path": ":memory:"
}
}
A fájlt nyugodtan szerkeszthetjük. Az eredeti tartalmat megtaláljuk a **default.json.example** fájlban.