golibsass icon indicating copy to clipboard operation
golibsass copied to clipboard

Easy to use Go bindings for LibSass.

Tests on Linux, MacOS and Windows Go Report Card LibSass Version codecov GoDoc

Note: LibSASS (the C++ library that this project wraps) is now deprecated. You may want to try https://github.com/bep/godartsass

The primary motivation for this project is to provide SCSS support to Hugo. I welcome PRs with bug fixes. I will also consider adding functionality, but please raise an issue discussing it first.

If you need more functionality than this project can provide you may want to have a look at go-libsass.

Usage

A basic example (error handling omitted):

transpiler, _ := libsass.New(libsass.Options{OutputStyle: libsass.CompressedStyle})
	
result, _ := transpiler.Execute(`
$font-stack:    Helvetica, sans-serif;
$primary-color: #333;

body {
  font: 100% $font-stack;
  color: $primary-color;
}
`)

fmt.Println(result.CSS)
// Output: body{font:100% Helvetica,sans-serif;color:#333}

See the GoDoc for more options.

Update LibSass version

This project embeds the LibSASS source code as a Git subtree. To update:

  1. Pull in the relevant LibSASS version, e.g. ./pull-libsass.sh 3.6.3
  2. Regenerate wrappers with go generate ./gen
  3. Update the LibSass version badge above.

Local development

Compiling C++ code isn' particulary fast; if you install libsass on your PC you can link against that, useful during development.

On a Mac you may do something like:

brew install --HEAD libsass
go test ./libsass -tags dev