İçeriğe geç
LexerLangv0.1.0

lexer serve

Tek çalıştırma komutu ve bayrakları: --port, --watch, --background, --production.

Terminal
lexer serve <dosya> [--port N] [--watch] [--background]
                    [--production] [--log <dosya>]

Dosyayı okur, ayrıştırır ve çalıştırır. build ve run komutları yoktur — serve zaten ikisini de yapıyor.

Bayraklar dosya adından önce de sonra da yazılabilir:

Terminal
lexer serve app.lexer --port 8080

Çıkış kodu başarıda 0, hatada 1.

Bayraklar#

BayrakEtkisi
--port NCLI portu; uygulama içindeki port ayarını ezer
--watchdosya değiştiğinde uygulamayı durdurup yeniden çalıştırır
--backgroundayrı süreçte başlatır, çıktıyı .logs/YYYYAAGG.log dosyasına yazar
--productionüretim kipi; --log verilmemişse out.log varsayılan olur
--log <dosya>çıktıyı dosyaya yönlendirir; kipe dokunmaz

--port ile --production farklı şeylere bakar: biri nerede dinleneceğini, diğeri hata sayfasının ne kadar konuşacağını belirler.

Geliştirme#

Terminal
lexer serve app.lexer --watch

Dosyayı her kaydedişinizde sunucu nazikçe kapanır ve yeniden ayağa kalkar. Tarayıcıyı yenilemek yeterlidir.

--watch yalnızca giriş dosyasını değil, aktarılan .lx dosyalarını da izler; bir lib/ dosyasını değiştirmek de yeniden başlatır.

Arka planda#

Terminal
lexer serve app.lexer --background --port 8080

Süreç terminalden ayrılır. out() çıktısı ve [lexer] ön ekli tanı satırları uygulama dizinindeki .logs/YYYYAAGG.log dosyasına gider.

Metin
ön plan    →  terminal
arka plan  →  <uygulama dizini>/.logs/YYYYAAGG.log

Dosya adı tarihle: kronolojik sıralama dosya sisteminde doğrudan çalışsın diye GGAAYY değil YYYYAAGG.

Çalışma kipi#

Terminal
lexer serve app.lexer                       # development (varsayılan)
lexer serve app.lexer --production          # production
LEXER_ENV=production lexer serve app.lexer  # production

Öncelik CLI'dadır: --production verilmişse ortam değişkenine bakılmaz.

Kip yalnızca hata sayfasını değiştirir:

Metin
geliştirme:  sayfa calistirilamadi: /yol/app.lexer:25:19: tanimsiz degisken: $yok
üretim:      sayfa calistirilamadi (olay: 4b17df5d3b21)

Ayrıntı log dosyasına aynı kimlikle yazılır. Kullanıcının size bildirdiği kod ile logdaki satırı bulursunuz; tarayıcıya dosya yolu ve satır numarası sızmaz.

Kipi dilin içinden okumak#

LexerLang
use modes

if mode == modes.development then
    out("geliştirme kipi")
end if
İsimNeuse gerekir mi
modedeğerin kendisihayır
modes.development · modes.productionsabitlerevet
modes.currentmode ile aynıevet
modes.is_production() · modes.is_development()kısayolevet

mode ile modes bilerek ayrı: biri değer, diğeri küme.

Uygulama kipi değiştiremez. Değiştirebilseydi "hangi kipteyiz" sorusunun cevabı çalıştırmanın ortasında değişebilirdi.

Port#

Port üç yerden gelebilir; öncelik yukarıdan aşağı:

Terminal
lexer serve app.lexer --port 8080     # 1. CLI bayrağı
LexerLang
$app.listen({port: 3000})             # 2. listen argümanı
$app = new http_server({port: 3000})  # 3. nesne ayarı

Sırada#

Süreç yönetimistatus, logs, stop.