Configuration de développement
Conditions préalables
- Docker / Docker Compose
- Node.js >=24.12.0
- pnpm >=10.24.0 (packageManager: pnpm@10.30.3)
- SQLite3
- Inkscape (pour la traduction SVG de la documentation et l'export PNG ; requis uniquement si vous exécutez
translateoutranslate:svg) - bat/batcat (pour afficher une version élégante de
translate:help) - direnv (pour charger automatiquement les fichiers
.env*)
Étapes
1. Cloner le dépôt :
git clone https://github.com/wsj-br/duplistatus.git
cd duplistatus
2. Installer les dépendances (Debian/Ubuntu) :
sudo apt update
sudo apt install sqlite3 git inkscape bat -y
3. Supprimer les installations Node.js existantes (si déjà installées)
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. Installer Node.js et pnpm :
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
npm install -g pnpm npm-check-updates doctoc
5. Configurer le support de direnv
Ajoutez ces lignes à votre fichier ~/.bashrc
# direnv support (apt install direnv)
eval "$(direnv hook bash)"
avec cette commande :
(echo "# direnv support (apt install direnv)"; echo 'eval "$(direnv hook bash)') >> ~/.bashrc
dans le répertoire de base du dépôt, exécuter :
direnv allow
Ajoutez ces lignes à votre fichier ~/.profile
# export the Bash environment (needed for code editor or AI Agents to load it).
export BASH_ENV="$HOME/.bashrc"
avec cette commande :
(echo "# export the Bash environment (needed for code editor or AI Agents to load it)."; \
echo 'export BASH_ENV="$HOME/.bashrc"') >> ~/.profile
Vous devez rouvrir le terminal ou potentiellement fermer/rouvrir l'éditeur de code IDE (Visual Studio Code, Cursor, Lingma, Antigravity, Zed, ...) pour que ces modifications prennent effet.
6. Créer le fichier .env à la racine du dépôt avec ces variables.
-
Vous pouvez utiliser n'importe quelle valeur pour
VERSION; elle sera automatiquement mise à jour lors de l'utilisation des scripts de développement. -
Utilisez des mots de passe aléatoires pour
ADMIN_PASSWORDetUSER_PASSWORD; ces mots de passe seront utilisés dans le scriptpnpm take-screenshots. -
Vous pouvez obtenir la
OPENROUTER_API_KEYdepuis openrouter.ai.VERSION=x.x.x
# Development user passwords
ADMIN_PASSWORD="admin_secret"
USER_PASSWORD="user_secret"
# Openrouter.ai API key for translation scripts in documentation
OPENROUTER_API_KEY=sk-or-v1-your-key-for-translate-files
Scripts Disponibles
Le projet inclut plusieurs scripts npm pour différentes tâches de développement :
Scripts de développement
pnpm dev- Démarrer le serveur de développement sur le port 8666 (inclut des vérifications préalables)pnpm build- Construire l'application pour la production (inclut des vérifications préalables)pnpm lint- Exécuter ESLint pour vérifier la qualité du codepnpm typecheck- Exécuter la vérification des types TypeScriptscripts/upgrade-dependencies.sh- Mettre à jour tous les packages vers la dernière version, vérifier les vulnérabilités et les corriger automatiquementscripts/clean-workspace.sh- Nettoyer l'espace de travail
Note : Le script preinstall applique automatiquement pnpm comme gestionnaire de paquets.
Scripts de Documentation
Ces scripts doivent être exécutés depuis le répertoire documentation/ :
pnpm start- Construire et servir le site de documentation en mode production (port 3000 par défaut)pnpm start:en- Démarrer le serveur de développement de documentation en anglais (rechargement à chaud activé)pnpm start:fr- Démarrer le serveur de développement de documentation en français (rechargement à chaud activé)pnpm start:de- Démarrer le serveur de développement de documentation en allemand (rechargement à chaud activé)pnpm start:es- Démarrer le serveur de développement de documentation en espagnol (rechargement à chaud activé)pnpm start:pt-br- Démarrer le serveur de développement de documentation en portugais (Brésil) (rechargement à chaud activé)pnpm build- Construire le site de documentation pour la productionpnpm write-translations- Extraire les chaînes traduisibles de la documentationpnpm translate- Traduire les fichiers de documentation à l'aide de l'IA (voir Workflow de Traduction)pnpm lint- Exécuter ESLint sur les fichiers sources de documentation
Les serveurs de développement (start:*) offrent un remplacement de module à chaud pour un développement rapide. Le port par défaut est 3000.
Scripts de Production
pnpm build-local- Construire et préparer pour la production locale (inclut les pré-vérifications, copie les fichiers statiques dans le répertoire autonome)pnpm start-local- Démarrer le serveur de production localement (port 8666, inclut les pré-vérifications). Note : Exécutez d'abordpnpm build-local.pnpm start- Démarrer le serveur de production (port 9666)
Scripts Docker
pnpm docker:up- Démarrer la pile Docker Composepnpm docker:down- Arrêter la pile Docker Composepnpm docker:clean- Nettoyer l'environnement Docker et le cachepnpm docker:devel- Construire une image Docker de développement étiquetéewsj-br/duplistatus:devel
Scripts du Service Cron
pnpm cron:start- Démarrer le service cron en mode productionpnpm cron:dev- Démarrer le service cron en mode développement avec surveillance des fichiers (port 8667)pnpm cron:start-local- Démarrer le service cron localement pour les tests (port 8667)
Scripts de Test
pnpm generate-test-data- Générer des données de test de sauvegarde (nécessite le paramètre --servers=N)pnpm show-overdue-notifications- Afficher le contenu des notifications en retardpnpm run-overdue-check- Exécuter la vérification des retards à une date/heure spécifiquepnpm test-cron-port- Tester la connectivité du port du service cronpnpm test-overdue-detection- Tester la logique de détection des sauvegardes en retardpnpm validate-csv-export- Valider la fonctionnalité d'exportation CSVpnpm set-smtp-test-config- Définir la configuration de test SMTP à partir des variables d'environnement (voir Scripts de Test)pnpm test-smtp-connections- Tester la compatibilité croisée des types de connexion SMTP (voir Scripts de Test)pnpm test-entrypoint- Tester le script de point d'entrée Docker en développement local (voir Scripts de Test)pnpm take-screenshots- Prendre des captures d'écran pour la documentation (voir Outils de Documentation)