#rocket #sass #fairing

sass-rocket-fairing

A rocket fairing to compile sass files automagically on change ✨

1 unstable release

0.2.0 Jul 14, 2022
0.1.0 Jul 10, 2021

#3 in #fairing

41 downloads per month

MIT license

18KB
242 lines

Sass Rocket Fairing

sass-rocket-fairing is a Fairing/middleware for rocket.rs facilitating sass compilation. It compiles your sass files on change automagically ✨

Powered by rsass (Sass reimplementation in Rust) under the hood.

Installing

Add the following to your Cargo.toml file

sass-rocket-fairing = "0.2"

OR using git

sass-rocket-fairing = {version = "0.2", git="https://github.com/SyedAhkam/sass-rocket-fairing.git"}

Usage

#[macro_use]
extern crate rocket;

use sass_rocket_fairing::SassFairing;

#[launch]
fn rocket() -> _ {
    rocket::build().attach(SassFairing::default())
}

Configuration

SassFairing takes advantage of rocket's advanced configuration system. There are two ways to configure it.

  1. Using Rocket.toml (recommended)

Add a Rocket.toml file in root directory of your crate and add the following to it:

[default]
sass_dir = "static/sass"
css_dir = "static/css"
  1. Using enviroment variables

Set the following environment variables:

  • ROCKET_SASS_DIR
  • ROCKET_CSS_DIR

Where

  • sass_dir is the folder where your sass files are to be located.

  • css_dir is where your built css files are to be located.

Change output format

You can change the output format of the css files by setting the format parameter while creating a new SassFairing.

rsass have been re-exported for convenience.

#[macro_use]
extern crate rocket;

use sass_rocket_fairing::{SassFairing, rsass};

#[launch]
fn rocket() -> _ {
    rocket::build()
        .attach(SassFairing::new(rsass::output::Format {
                style: output::Style::Compressed,
                .. Default::default()
            }
        )
    )
}

Todo

  • Add support for sass (sass != scss) syntax.
  • Combine multiple sass files into one css file.

Thanks

I've stolen a big chunk of code from rocket_dyn_templates and adapted it to my needs.

Contributing

Feel free to send me a pull request! My code might be a little iffy but that's because I'm new to the rust ecosystem.

License

Licensed under the most permissive license, MIT.

Dependencies

~17–56MB
~1M SLoC