wsl-labs GitHub

🌐 Sitio web — cómo se genera y se publica#

Versión: v1 Estado: 🟢 Activo Uso recomendado: Leer antes de tocar la portada, la documentación publicada o el workflow pages

La web del proyecto vive en https://vladimiracunadev-create.github.io/wsl-labs/ y se genera desde este mismo repositorio. No hay HTML versionado: site/ es salida, se borra y se reconstruye en cada ejecución.


🗺️ Esquema#

flowchart LR
    subgraph FUENTES["📥 Fuentes en el repo"]
        CAT["containers.config.json"]
        VER["version.txt"]
        MD["*.md (raíz, docs, cheatsheets, casos)"]
        SRC["site-src/ (cuerpo + estilos)"]
    end
    GEN["scripts/build-site.mjs"]
    CHK["scripts/check-site-links.mjs"]
    OUT["site/ (HTML generado)"]
    PAGES["GitHub Pages"]
    CAT --> GEN
    VER --> GEN
    MD --> GEN
    SRC --> GEN
    GEN --> OUT
    OUT --> CHK
    CHK --> PAGES

🧱 Qué se publica#

Origen en el repoPágina publicada
site-src/index.html + catálogo/index.html (portada)
*.md de la raíz/readme.html, /changelog.html, /roadmap.html, …
docs/*.md/docs/<nombre>.html
cheatsheets/*.md/cheatsheets/<nombre>.html
containers/NN-caso/README.md/containers/NN-caso/index.html
— (generadas)/docs/index.html, /cheatsheets/index.html, /containers/index.html, /404.html
El panel de control (index.html de la raíz, dashboard.js, dashboard.css) no se publica. Escucha en localhost, ejecuta wslc.exe y no tiene autenticación: en internet sería un mando a distancia sin dueño.

🔗 Enlaces: todo termina en HTML#

El generador reescribe cada enlace del Markdown según a dónde apunte:

Enlace en el .mdEnlace en la web
docs/INSTALL.mddocs/install.html
../README.mdreadme.html
containers/01-node-api/containers/01-node-api/index.html
LICENSE, *.json, *.gohttps://github.com/…/blob/main/…
#-una-seccionse conserva: los anclajes usan las mismas reglas que GitHub

scripts/check-site-links.mjs comprueba las tres formas de romper un enlace aquí: una página que no existe, un ancla que nadie define y un fichero enlazado en GitHub que ya no está en el repositorio. Falla con código 1 y el sitio no se publica.


🛠️ Trabajar en local#

make site          # genera site/
make site-check    # genera site/ y revisa los enlaces

Para verlo en el navegador basta con servir la carpeta:

node -e "require('http').createServer((q,s)=>require('fs').createReadStream('site'+(q.url==='/'?'/index.html':q.url)).pipe(s)).listen(4173)"
site/ está en .gitignore a propósito. Si aparece en un git status, algo lo está versionando y la web podrá contradecir al repositorio.

🤖 Publicación (workflow pages)#

PasoQué hace
push a mainSolo si cambian site-src/, los generadores, un .md, el catálogo o version.txt
Generarnode scripts/build-site.mjs
VerificarPortada con los 12 casos, versión de version.txt, una página por documento y cero enlaces rotos
Publicaractions/upload-pages-artifact + actions/deploy-pages

Las acciones están fijadas a SHA: el workflow escribe en Pages y no debe depender de una etiqueta móvil.

Pages está activado en el repositorio con origen GitHub Actions. El workflow no intenta crearlo (enablement: true): esa llamada exige permisos de administración que el GITHUB_TOKEN no tiene y tumbaba el job con el sitio ya generado y verificado.

📚 Documentos relacionados#

Fuente: docs/sitio-web.md