Entwicklungsumgebung einrichten
Voraussetzungen
- Docker / Docker Compose
- Node.js (siehe
engines.nodeinpackage.json) - pnpm (siehe
engines.pnpm/packageManagerinpackage.json) - SQLite3
- Inkscape (für die Dokumentation von SVG-Übersetzungen und PNG-Export; nur erforderlich, wenn Sie
translateodertranslate:svgausführen) - bat/batcat (um eine ansprechende Version von
translate:helpanzuzeigen) - direnv (zum automatischen Laden der
.env*Dateien) - Playwright Chromium (führen Sie
pnpm take-screenshots:installnachpnpm installaus; dies führtplaywright install chromiumaus)
Schritte
1. Repository klonen:
git clone https://github.com/wsj-br/duplistatus.git
cd duplistatus
2. Abhängigkeiten installieren (Debian/Ubuntu):
sudo apt update
sudo apt install sqlite3 git inkscape bat -y
sudo apt install -y build-essential python3 python3-dev python3-setuptools make g++ gcc pkg-config
3. Alte Node.js-Installationen entfernen (falls bereits installiert)
sudo apt-get purge nodejs npm -y
sudo apt-get autoremove -y
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/share/man/man1/node*
sudo rm -rf /usr/local/lib/dtrace/node.d
rm -rf ~/.npm
rm -rf ~/.node-gyp
sudo rm -rf /opt/local/bin/node
sudo rm -rf /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/include/node*
sudo rm -rf /usr/local/bin/node*
4. Node.js und pnpm installieren:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
npm config set allow-scripts=pnpm --location=user
npm install -g pnpm npm-check-updates doctoc
5. direnv-Unterstützung einrichten
Fügen Sie diese Zeilen zu Ihrer ~/.bashrc Datei hinzu
# direnv support (apt install direnv)
eval "$(direnv hook bash)"
mit diesem Befehl:
(echo "# direnv support (apt install direnv)"; echo 'eval "$(direnv hook bash)') >> ~/.bashrc
im Hauptverzeichnis des Repository ausführen:
direnv allow
Fügen Sie diese Zeilen zu Ihrer ~/.profile Datei hinzu
# export the Bash environment (needed for code editor or AI Agents to load it).
export BASH_ENV="$HOME/.bashrc"
mit diesem Befehl:
(echo "# export the Bash environment (needed for code editor or AI Agents to load it)."; \
echo 'export BASH_ENV="$HOME/.bashrc"') >> ~/.profile
Sie müssen das Terminal neu öffnen oder möglicherweise den Code-Editor (Visual Studio Code, Cursor, Lingma, Antigravity, Zed, ...) schließen/erneut öffnen, damit diese Änderungen wirksam werden.
6. Erstellen Sie die .env Datei im Hauptverzeichnis des Repository mit diesen Variablen.
-
Sie können einen beliebigen Wert für
VERSIONverwenden; dieser wird beim Verwenden der Entwicklungsskripte automatisch aktualisiert. -
Verwenden Sie zufällige Passwörter für
ADMIN_PASSWORDundUSER_PASSWORD; diese Passwörter werden impnpm take-screenshotsSkript verwendet. -
Sie erhalten den
OPENROUTER_API_KEYvon openrouter.ai.VERSION=x.x.x# Development user passwordsADMIN_PASSWORD="admin_secret"USER_PASSWORD="user_secret"# Openrouter.ai API key for translation scripts in documentationOPENROUTER_API_KEY=sk-or-v1-your-key-for-translate-files
Verfügbare Skripte
Das Projekt enthält mehrere npm-Skripte für verschiedene Entwicklungsaufgaben:
Entwicklungsskripte
pnpm dev- Startet den Next.js-Entwicklungsserver (Port 8666) und den Cron-Service (Port 8667) gemeinsam überconcurrently(enthält Pre-Checks). STRG-C stoppt beide.NODE_OPTIONSfür Next.js lädtscripts/dev-preload.cjs, dasscripts/peer-ip.cjs(TCP-Peer-Adresse für IP-Allowlisten) und Zeitstempel für Anforderungsprotokolle anwendet.pnpm dev:next- Startet nur den Next.js-Entwicklungsserver auf Port 8666 (kein Cron).pnpm build- Baut die Anwendung für die Produktion (enthält Pre-Checks)pnpm lint- Führt ESLint aus, um die Code-Qualität zu prüfenpnpm typecheck- Führt TypeScript-Typüberprüfung ausscripts/upgrade-dependencies.sh— Build-sicheres Upgrade aller Workspace-Pakete (automatisch erkannt). Ermittelt neueste Versionen mitnpm-check-updates, installiert vom Workspace-Stamm aus und behält nur Upgrades, die dietypecheck/lintjedes Pakets bestehen (Peer-Gates fixiereneslint/typescript, wenn der Lint-Stack die neueste Hauptversion nicht zulässt). Führt dannpnpm audit/audit --fixaus und wendet (und meldet) zwangsweise alle Sicherheitskorrekturen an, die Code-Änderungen benötigen. Aktualisiert die Workspace-Sperrendatei und browserslist. Bevorzugen Siesource ./scripts/upgrade-dependencies.sh, damit nvm auf Ihre Shell angewendet wird; in CI oder Automatisierung verwenden SieCI=1oderUPGRADE_ALLOW_EXEC=1, wenn Sie die Datei direkt ausführen. Siehe auchscripts/upgrade-tools.shnur für Node/pnpm-Tooling.scripts/clean-workspace.sh- Bereinigt den Workspacepnpm i18n:tools --local/--remote— Verlinkt einen Geschwister-ai-i18n-tools-Checkout oder stellt das letzte npm-Paket wieder her (scripts/link-ai-i18n-tools.sh). Commiten Sie nicht denlink:-Spezifikator.
Hinweis: Das preinstall-Skript erzwingt automatisch pnpm als Paketmanager.
Dokumentationsskripte
Diese Skripte müssen aus dem documentation/-Verzeichnis heraus ausgeführt werden:
pnpm start- Baut und startet die Dokumentationsseite im Produktionsmodus (standardmäßig Port 3000)pnpm start:en- Startet den Dokumentationsentwicklungsserver in Englisch (Hot Reloading aktiviert)pnpm start:fr- Startet den Dokumentationsentwicklungsserver in französischer Lokalisierung (Hot Reloading aktiviert)pnpm start:de- Startet den Dokumentationsentwicklungsserver in deutscher Lokalisierung (Hot Reloading aktiviert)pnpm start:es- Startet den Dokumentationsentwicklungsserver in spanischer Lokalisierung (Hot Reloading aktiviert)pnpm start:pt-br- Startet den Dokumentationsentwicklungsserver in portugiesischer (Brasilien) Lokalisierung (Hot Reloading aktiviert)pnpm build- Baut die Dokumentationsseite für die Produktionpnpm write-translations- Extrahiert übersetzbare Zeichenketten aus der Dokumentationpnpm translate- Übersetzt Dokumentationsdateien mithilfe von KI (siehe Übersetzungsworkflow)pnpm lint- Führt ESLint auf Dokumentationsquelldateien aus
Die Entwicklungsserver (start:*) bieten Hot Module Replacement für schnelle Entwicklung. Der Standardport ist 3000.
Produktionsskripte
pnpm build-local- Baut und bereitet für lokale Produktion vor (enthält Pre-Checks, kopiert statische Dateien in eigenständiges Verzeichnis)pnpm start-local- Startet den Produktionsserver lokal (Port 8666, enthält Pre-Checks). Hinweis: Führen Sie zuerstpnpm build-localaus. Startet den eigenständigen Server mit--require ./scripts/peer-ip.cjs.pnpm start- Startet den Produktionsserver (Port 9666) mit derselben Peer-IP-Vorabladung. Docker verwendetdocker-entrypoint.sh, um dasselbe Skript zu laden.
Docker-Skripte
pnpm docker:up- Startet Docker Compose Stackpnpm docker:down- Stoppt Docker Compose Stackpnpm docker:clean- Bereinigt Docker-Umgebung und Cachepnpm docker:devel- Erstellt ein Entwicklungs-Docker-Image mit dem Tagwsj-br/duplistatus:devel
Cron-Service-Skripte
pnpm cron:start- Startet Cron-Service im Produktionsmoduspnpm cron:dev- Startet nur den Cron-Service im Entwicklungsmodus mit Dateiüberwachung (Port 8667). Normalerweise unnötig, wennpnpm devverwendet wird, das Cron bereits startet.pnpm cron:start-local- Startet Cron-Service lokal zum Testen (Port 8667)
Testskripte
pnpm generate-test-data- Generiert Test-Sicherungsdaten (erfordert --servers=N Parameter)pnpm validate-csv-export- Validiert CSV-Export-Funktionalitätpnpm test-entrypoint- Testet Docker-Entrypoint-Skript in lokaler Entwicklung (siehe Testskripte)pnpm take-screenshots- Erstellt Screenshots für die Dokumentation (siehe Dokumentationswerkzeuge)
Überfällige Prüfungen, Cron-Statusprüfungen und SMTP-Tests werden über die laufende Anwendung und curl durchgeführt (siehe Testskripte); die alten eigenständigen pnpm-Helfer dafür wurden entfernt.