Crate pagetop_build

Source
Expand description

PageTop Build

Incluye fácilmente archivos estáticos o archivos SCSS compilados directamente en el binario de tus aplicaciones PageTop.

Licencia Doc API Crates.io Descargas

§Sobre PageTop

PageTop es un entorno de desarrollo que reivindica la esencia de la web clásica para crear soluciones web SSR (renderizadas en el servidor) modulares, extensibles y configurables, basadas en HTML, CSS y JavaScript.

§⚡️ Guía rápida

Añade en el archivo Cargo.toml de tu aplicación:

[build-dependencies]
pagetop-build = { ... }

Luego crea un archivo build.rs para definir cómo se van a incluir los archivos estáticos o archivos SCSS en tu aplicación. Casos de uso:

§Incluir archivos estáticos desde un directorio

Prepara una carpeta en tu proyecto con todos los archivos que deseas incluir, por ejemplo static, y añade el siguiente código a tu archivo build.rs para crear tu conjunto de recursos:

use pagetop_build::StaticFilesBundle;

fn main() -> std::io::Result<()> {
    StaticFilesBundle::from_dir("./static", None)
        .with_name("guides")
        .build()
}

Si es necesario, puedes añadir un filtro para seleccionar archivos específicos de la carpeta:

use pagetop_build::StaticFilesBundle;
use std::path::Path;

fn main() -> std::io::Result<()> {
    fn only_pdf_files(path: &Path) -> bool {
        // Include only files with the `.pdf` extension.
        path.extension().map_or(false, |ext| ext == "pdf")
    }

    StaticFilesBundle::from_dir("./static", Some(only_pdf_files))
        .with_name("guides")
        .build()
}

§Compilar archivos SCSS a CSS

Puedes compilar un archivo SCSS, que podría importar otros a su vez, para preparar un conjunto de recursos con el archivo CSS obtenido. Por ejemplo:

use pagetop_build::StaticFilesBundle;

fn main() -> std::io::Result<()> {
    StaticFilesBundle::from_scss("./styles/main.scss", "styles.css")
        .with_name("main_styles")
        .build()
}

Este código compila el archivo main.scss de la carpeta static del proyecto, en un archivo styles.css que se preparará como un conjunto de recursos llamado main_styles.

§📦 Módulos generados

Cada conjunto de recursos StaticFilesBundle genera un archivo en el directorio estándar OUT_DIR donde se incluyen los recursos necesarios para la compilación. Por ejemplo, para with_name("guides") se crea un archivo llamado guides.rs.

Ten en cuenta que puedes generar más de un conjunto de recursos para usar en tu proyecto.

Normalmente no necesitarás acceder directamente a este archivo; sólo inclúyelo en tu proyecto con include_files!, y luego configura un servicio web usando include_files_service! para servir tu conjunto de recursos desde la ruta indicada:

use pagetop::prelude::*;

include_files!(guides);

pub struct MyExtension;

impl ExtensionTrait for MyExtension {
    // Configures a web service to expose the `guides` resources at `/route/to/guides`.
    fn configure_service(&self, scfg: &mut service::web::ServiceConfig) {
        include_files_service!(scfg, guides => "/route/to/guides");
    }
}

También podrías acceder a tu conjunto de recursos declarando un HashMap estático global:

use pagetop::prelude::*;

// Declares a static `HashMap` for accessing included resources as key-value pairs.
include_files!(HM_GUIDES => guides);

Structs§

StaticFilesBundle
Genera el conjunto de recursos a incluir en el binario de la aplicación utilizando static_files.