Skip to content

SuaveIO/Suave.Minify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Suave.Minify

A minify and bundling WebPart for Suave using YUI Compressor.

NuGet Build status

Features

  • JavaScript minification - Compress JavaScript files using YUI Compressor
  • CSS minification - Compress CSS files using YUI Compressor
  • Bundling - Combine multiple files into a single response
  • Caching - Automatic in-memory caching of minified content
  • Conditional requests - Supports If-Modified-Since header for efficient browser caching
  • Pre-minified file support - Files containing .min. in the name are included without re-minification

Installation

dotnet add package Suave.Minify

Usage

JavaScript Bundle

Bundle and minify multiple JavaScript files:

open Suave
open Suave.Filters
open Suave.Minify

let app : WebPart =
    path "/jsbundle" >=> jsBundle [ "js/jquery-3.1.1.min.js"; "js/chess.js"; "js/app.js" ]

CSS Bundle

Bundle and minify multiple CSS files:

open Suave
open Suave.Filters
open Suave.Minify

let app : WebPart =
    path "/styles/bundle.css" >=> cssBundle [ "styles/main.css"; "styles/layout.css" ]

Manual Compression

You can also use the lower-level compress function directly:

open Suave.Minify

// Compress a list of JavaScript files
let minifiedJs = compress [ "path/to/file1.js"; "path/to/file2.js" ] "*.js"

// Compress a list of CSS files  
let minifiedCss = compress [ "path/to/file1.css"; "path/to/file2.css" ] "*.css"

API Reference

Function Description
jsBundle Creates a WebPart that serves bundled and minified JavaScript with application/x-javascript MIME type
cssBundle Creates a WebPart that serves bundled and minified CSS with text/css MIME type
bundle Lower-level function to create a bundling WebPart with a custom filter
compress Compresses a list of files and returns the minified content as a string
mimify Cached version of compress - returns cached result if available

Notes

  • Files with .min. in the filename (e.g., jquery.min.js) are included as-is without additional minification
  • The library caches minified content in memory for performance
  • Supports If-Modified-Since HTTP header for browser caching

Requirements

  • .NET 10.0 or later
  • Suave 3.2.2 or later

Dependencies

License

This project is part of the Suave ecosystem.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

A minify WebPart for Suave

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages