← back to Rentv 2026
server: dependency-free .env loader (durable prod config across deploys)
2e7caa4b3d8a0cb89de6bc9f4264935632f21bc4 · 2026-08-04 16:59:36 -0700 · steve
Files touched
Diff
commit 2e7caa4b3d8a0cb89de6bc9f4264935632f21bc4
Author: steve <steve@designerwallcoverings.com>
Date: Tue Aug 4 16:59:36 2026 -0700
server: dependency-free .env loader (durable prod config across deploys)
---
server.js | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/server.js b/server.js
index 3f8fbc32..8f7a2ecb 100644
--- a/server.js
+++ b/server.js
@@ -5,6 +5,15 @@
// Folds in the consulting deliverable (/consulting) + promos (/press), admin-only.
const fs = require('fs');
const path = require('path');
+// Lightweight .env loader (no dotenv dependency): populate process.env from ./.env if present,
+// without overriding anything already set. Durable across deploys — .env is rsync-excluded, so
+// prod-only config (e.g. OLLAMA_URL → Mac2's GPU over the tailnet) survives every reload.
+try {
+ for (const line of fs.readFileSync(path.join(__dirname, '.env'), 'utf8').split('\n')) {
+ const m = line.match(/^\s*([A-Za-z0-9_]+)\s*=\s*(.*?)\s*$/);
+ if (m && !(m[1] in process.env)) process.env[m[1]] = m[2].replace(/^["']|["']$/g, '');
+ }
+} catch { /* no .env — fine */ }
const { localizeImage } = require('./scripts/lib/localize.cjs'); // never hotlink rentv.com photos
const { spawn } = require('child_process'); // article-to-video generator jobs (/social studio)
const express = require('express');
← 8c9901f9 CRM Content Studio: deep multi-source dated news feed → orig
·
back to Rentv 2026
·
auto-save: 2026-08-04T17:05:12 (4 files) — .deploy.conf data 4ce9fdce →