/golibsass

Easy to use Go bindings for LibSass.

Primary LanguageC++MIT LicenseMIT

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