Configuración de Desarrollo
Requisitos previos
- Docker / Docker Compose
- Node.js (consulta
engines.nodeenpackage.json) - pnpm (consulta
engines.pnpm/packageManagerenpackage.json) - SQLite3
- Inkscape (para la traducción de SVGs de documentación y exportación a PNG; requerido solo si ejecutas
translateotranslate:svg) - bat/batcat (para mostrar una versión bonita de
translate:help) - direnv (para cargar automáticamente los archivos
.env*)
Pasos
1. Clonar el repositorio:
git clone https://github.com/wsj-br/duplistatus.git
cd duplistatus
2. Instalar dependencias (Debian/Ubuntu):
sudo apt update
sudo apt install sqlite3 git inkscape bat -y
3. Eliminar instalaciones antiguas de Node.js (si ya lo tiene instalado)
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. Instalar Node.js y 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. Configurar soporte de direnv
Añadir estas líneas a su archivo ~/.bashrc
# direnv support (apt install direnv)
eval "$(direnv hook bash)"
con este comando:
(echo "# direnv support (apt install direnv)"; echo 'eval "$(direnv hook bash)') >> ~/.bashrc
en el directorio base del repositorio, ejecute:
direnv allow
Añadir estas líneas a su archivo ~/.profile
# export the Bash environment (needed for code editor or AI Agents to load it).
export BASH_ENV="$HOME/.bashrc"
con este comando:
(echo "# export the Bash environment (needed for code editor or AI Agents to load it)."; \
echo 'export BASH_ENV="$HOME/.bashrc"') >> ~/.profile
Necesita volver a abrir el terminal o es posible que deba cerrar/volver a abrir el editor de código IDE (Visual Studio Code, Cursor, Lingma, Antigravity, Zed, ...) para que estos cambios surtan efecto.
6. Crear el archivo .env en el directorio base del repositorio con estas variables.
-
Puede usar cualquier valor para
VERSION; se actualizará automáticamente al usar los scripts de desarrollo. -
Use contraseñas aleatorias para
ADMIN_PASSWORDyUSER_PASSWORD; estas contraseñas se utilizarán en el scriptpnpm take-screenshots. -
Puede obtener la
OPENROUTER_API_KEYdesde 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
Scripts Disponibles
El proyecto incluye varios scripts npm para diferentes tareas de desarrollo:
Scripts de desarrollo
pnpm dev- Iniciar el servidor de desarrollo en el puerto 8666 (incluye verificaciones previas)pnpm build- Compilar la aplicación para producción (incluye verificaciones previas)pnpm lint- Ejecutar ESLint para verificar la calidad del códigopnpm typecheck- Ejecutar la comprobación de tipos de TypeScriptscripts/upgrade-dependencies.sh— Actualización segura de la compilación de cada paquete del espacio de trabajo (detectado automáticamente). Utiliza el modo doctor denpm-check-updatespara mantener solo las actualizaciones que superen lostypecheck/lintde cada paquete, revirtiendo aquellas que rompan la compilación; luego ejecutapnpm audit/audit --fixy aplica forzosamente (y reporta) cualquier corrección de seguridad que requiera cambios en el código. Actualiza el archivo de bloqueo (lockfile) del espacio de trabajo y el browserslist. Se recomiendasource ./scripts/upgrade-dependencies.shpara que nvm se aplique a tu shell; en CI o automatización, usaCI=1oUPGRADE_ALLOW_EXEC=1al ejecutar el archivo directamente. Consulta tambiénscripts/upgrade-tools.shsolo para herramientas de Node/pnpm.scripts/clean-workspace.sh- Limpiar el espacio de trabajo
Nota: El script preinstall aplica automáticamente pnpm como gestor de paquetes.
Scripts de Documentación
Estos scripts deben ejecutarse desde el directorio documentation/:
pnpm start- Construir y servir el sitio de documentación en modo producción (puerto 3000 por defecto)pnpm start:en- Iniciar el servidor de desarrollo de documentación en inglés (recarga automática habilitada)pnpm start:fr- Iniciar el servidor de desarrollo de documentación en configuración regional francesa (recarga automática habilitada)pnpm start:de- Iniciar el servidor de desarrollo de documentación en configuración regional alemana (recarga automática habilitada)pnpm start:es- Iniciar el servidor de desarrollo de documentación en configuración regional española (recarga automática habilitada)pnpm start:pt-br- Iniciar el servidor de desarrollo de documentación en configuración regional portuguesa (Brasil) (recarga automática habilitada)pnpm build- Construir el sitio de documentación para producciónpnpm write-translations- Extraer cadenas traducibles de la documentaciónpnpm translate- Traducir archivos de documentación usando IA (ver Flujo de traducción)pnpm lint- Ejecutar ESLint en los archivos fuente de la documentación
Los servidores de desarrollo (start:*) proporcionan reemplazo de módulos en caliente para un desarrollo rápido. El puerto por defecto es 3000.
Scripts de Producción
pnpm build-local- Compilar y preparar para producción local (incluye verificaciones previas, copia archivos estáticos al directorio independiente)pnpm start-local- Iniciar servidor de producción localmente (puerto 8666, incluye verificaciones previas). Nota: Ejecutepnpm build-localprimero.pnpm start- Iniciar servidor de producción (puerto 9666)
Scripts de Docker
pnpm docker:up- Iniciar la pila de Docker Composepnpm docker:down- Detener la pila de Docker Composepnpm docker:clean- Limpiar el entorno y caché de Dockerpnpm docker:devel- Crear una imagen de desarrollo de Docker etiquetada comowsj-br/duplistatus:devel
Scripts del Servicio Cron
pnpm cron:start- Iniciar servicio cron en modo producciónpnpm cron:dev- Iniciar servicio cron en modo desarrollo con observación de archivos (puerto 8667)pnpm cron:start-local- Iniciar servicio cron localmente para pruebas (puerto 8667)
Scripts de prueba
pnpm generate-test-data- Generar datos de respaldo para pruebas (requiere el parámetro --servers=N)pnpm validate-csv-export- Validar la funcionalidad de exportación CSVpnpm test-entrypoint- Probar el script de entrada de Docker en desarrollo local (ver Scripts de prueba)pnpm take-screenshots- Tomar capturas de pantalla para la documentación (ver Herramientas de documentación)
Las comprobaciones retrasadas, las comprobaciones de salud de cron y las pruebas de SMTP se realizan a través de la aplicación en ejecución y curl (ver Test Scripts); se eliminaron los antiguos ayudantes independientes pnpm para esos.