From dbf0894894212a5ff996616e7539a94fcf53e67d Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Sat, 20 Jun 2026 19:47:19 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20(bootsier):=20A=C3=B1ade=20ajuste?= =?UTF-8?q?=20dev.bootsier=5Fstatic=5Fdir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Permite servir `css`, `js` y `fonts` desde disco mientras la aplicación está en ejecución, sin necesidad de recompilar. --- extensions/pagetop-bootsier/src/config.rs | 18 +++++++++++++++++- extensions/pagetop-bootsier/src/lib.rs | 13 +++++++++++-- src/global.rs | 9 ++++----- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/extensions/pagetop-bootsier/src/config.rs b/extensions/pagetop-bootsier/src/config.rs index 14ee27e1..dede3c4c 100644 --- a/extensions/pagetop-bootsier/src/config.rs +++ b/extensions/pagetop-bootsier/src/config.rs @@ -9,7 +9,7 @@ //! //! Uso: //! -//! ```rust +//! ```rust,no_run //! # use pagetop::prelude::*; //! use pagetop_bootsier::config; //! @@ -26,12 +26,15 @@ use serde::Deserialize; include_config!(SETTINGS: Settings => [ // [bootsier] "bootsier.max_width" => "1440px", + // [dev] + "dev.bootsier_static_dir" => "", ]); /// Ajustes para la sección [`Bootsier`] de [`SETTINGS`]. #[derive(Debug, Deserialize)] pub struct Settings { pub bootsier: Bootsier, + pub dev: Dev, } /// Sección **`[bootsier]`** de la configuración. Forma parte de [`Settings`]. @@ -40,3 +43,16 @@ pub struct Bootsier { /// Ancho máximo predeterminado para la página, por ejemplo "100%" o "90rem". pub max_width: UnitValue, } + +/// Sección **`[dev]`** de la configuración. Forma parte de [`Settings`]. +#[derive(Debug, Deserialize)] +pub struct Dev { + /// Directorio raíz de `static/` para servir los archivos estáticos propios de Bootsier. + /// + /// Si se indica una ruta válida, absoluta o relativa al directorio del proyecto o del binario + /// en ejecución, los archivos estáticos se servirán desde disco. Útil para poder modificar los + /// archivos estáticos mientras la aplicación está en ejecución, sin necesidad de recompilar. + /// + /// Si la cadena está vacía, se ignora este ajuste. + pub bootsier_static_dir: String, +} diff --git a/extensions/pagetop-bootsier/src/lib.rs b/extensions/pagetop-bootsier/src/lib.rs index d0820937..2ce4f566 100644 --- a/extensions/pagetop-bootsier/src/lib.rs +++ b/extensions/pagetop-bootsier/src/lib.rs @@ -134,8 +134,17 @@ impl Extension for Bootsier { } fn configure_router(&self, router: Router) -> Router { - serve_static_files!(router, [bootsier_bs] => "/bootsier/bs"); - serve_static_files!(router, [bootsier_js] => "/bootsier/js"); + let base = &config::SETTINGS.dev.bootsier_static_dir; + let subdir = |s: &str| { + if base.is_empty() { + String::new() + } else { + format!("{base}/{s}") + } + }; + serve_static_files!(router, [subdir("css"), bootsier_css] => "/bootsier/css"); + serve_static_files!(router, [subdir("js"), bootsier_js] => "/bootsier/js"); + serve_static_files!(router, [subdir("fonts"), bootsier_fonts] => "/bootsier/fonts"); router } } diff --git a/src/global.rs b/src/global.rs index 2d7b1b60..17bbbe94 100644 --- a/src/global.rs +++ b/src/global.rs @@ -90,12 +90,11 @@ pub struct App { /// Sección **`[dev]`** de la configuración. Forma parte de [`Settings`]. #[derive(Debug, Deserialize)] pub struct Dev { - /// Directorio desde el que servir los archivos estáticos de PageTop. + /// Directorio raíz de `static/` para servir los archivos estáticos propios de PageTop. /// - /// Por defecto, los archivos se integran en el binario de la aplicación. Si aquí se indica una - /// ruta válida, ya sea absoluta o relativa al directorio del proyecto o del binario en - /// ejecución, se servirán desde el sistema de ficheros en su lugar. Esto es especialmente útil - /// en desarrollo, ya que evita recompilar el proyecto por cambios en estos archivos. + /// Si se indica una ruta válida, absoluta o relativa al directorio del proyecto o del binario + /// en ejecución, los archivos estáticos se servirán desde disco. Útil para poder modificar los + /// archivos estáticos mientras la aplicación está en ejecución, sin necesidad de recompilar. /// /// Si la cadena está vacía, se ignora este ajuste. pub pagetop_static_dir: String,