turf 🌱

turf allows you to build SCSS to CSS during compile time and inject those styles into your binary.

Crates.io Docs.rs Build Status MIT licensed

Features

turf will:

Usage

For a complete runnable example project, you can check out one of the examples:

| leptos-example | yew-example | dioxus-example | | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |

1. Create SCSS styles for your application

```scss // file at scss/file/path.scss

.TopLevelClass { color: red;

.SomeClass {
    color: blue;
}

} ```

2. Use the style_sheet macro to include the resulting CSS in your code

rust,ignore turf::style_sheet!("scss/file/path.scss");

The macro from the above example will expand to the following code:

rust static STYLE_SHEET: &'static str = "<style_sheet>"; struct ClassName; impl ClassName { pub const TOP_LEVEL_CLASS: &'static str = "<unique_class_name>"; pub const SOME_CLASS: &'static str = "<another_unique_class_name>"; }

To access the generated class names, use the ClassName struct and its associated constants:

rust,ignore let top_level_class_name = ClassName::TOP_LEVEL_CLASS; let some_class_name = ClassName::SOME_CLASS;

3. Configuration

The configuration for turf can be specified in the Cargo.toml file using the [package.metadata.turf] key. This allows you to conveniently manage your SCSS compilation settings within your project's manifest.

Example configuration:

```toml [package.metadata.turf] minify = true loadpaths = ["path/to/scss/files", "path/to/other/scss/files"] classname_template = "custom--"

[package.metadata.turf.browser_targets] chrome = [80, 81, 82] firefox = 65 safari = [12, 13] ```

The following configuration options are available:

3.1 Browser Versions

The available browsers are as follows:

3.2 Browser Version Format

Three formats are supported:

| major | major.minor | major.minor.patch | | :---- | :---------- | :---------------- | | Use a single integer to specify the major version number. | Use an array [major, minor] to specify both the major and minor version numbers. | Use an array [major, minor, patch] to specify the major, minor, and patch version numbers. | | Example: 1 or [1] represent version 1 | Example: [1, 2] represents version 1.2 | Example: [1, 2, 3] represents version 1.2.3. |

Contributions

Contributions to turf are always welcome! Whether you have ideas for new features or improvements, don't hesitate to open an issue or submit a pull request. 🤝

License

turf is licensed under the MIT license. For more details, please refer to the LICENSE file. 📄