Spriting that sass has been missing
Go CSS Makefile Shell
Latest commit bd20c12 Jan 15, 2017 @awilliams awilliams committed with drewwells Fixes typo in README (#199)
Fixes 1-letter typo which negated the intended meaning
Permalink
Failed to load latest commit information.
Godeps updates for go-libsass changes Nov 25, 2016
docs abstract docs into separate files Nov 12, 2015
examples more context cleanup Jan 18, 2016
handlers add support for sprite-names fixes #192 (#194) Nov 26, 2016
payload golint errors Feb 10, 2016
scripts add sprite closing to main.go Jan 2, 2016
test font-url cache busting and test Nov 20, 2015
vendor updates for go-libsass changes Nov 25, 2016
version add version to http responses Jul 11, 2015
wt update for sourcemap changes in libSass Nov 1, 2016
.dockerignore update docker build scripts Dec 22, 2014
.gitignore goxc on master only Nov 21, 2015
.libsass_version update libsass so benchmark works http://codepen.io/drewwells/pen/KwaWva Apr 19, 2015
Dockerfile container should use go1.7.1 Sep 20, 2016
Dockerfile.scratch switch to custom alpine image Nov 27, 2015
LICENSE Licensing Dec 15, 2014
Makefile ldflags changes Sep 20, 2016
README.md Fixes typo in README (#199) Jan 15, 2017
appveyor.yml shitty way to make appveyor work with submodules Nov 25, 2015
build.go updates for go-libsass changes Nov 25, 2016
build_test.go update for sourcemap changes in libSass Nov 1, 2016
circle.yml move files to circleci artifact directory, fuck you circleci Sep 23, 2016
filewatcher.go address race condition in closing Sep 21, 2016
filewatcher_darwin.go address race condition in closing Sep 21, 2016
filewatcher_notdarwin.go address race condition in closing Sep 21, 2016
filewatcher_test.go address race condition in closing Sep 21, 2016
http.go update for sourcemap changes in libSass Nov 1, 2016
http_test.go lots of bug fixes Mar 29, 2016
import.go rename libsass to go-libsass Apr 20, 2015
import_test.go increase test coverage and remove dead code Apr 20, 2015
log.go rename project to wellington Dec 17, 2014
parser.go easy wins for coverage Oct 21, 2015
parser_test.go lots of bug fixes Mar 29, 2016
pather.go move sorting to non-concurrent code Sep 21, 2016
pather_test.go move sorting to non-concurrent code Sep 21, 2016
setup_test.go remove funcs used no where Jan 13, 2015
spec_test.go Fix tests requiring preamble disable parser tests Apr 1, 2015
version.txt bump version for release Nov 2, 2016
wercker.yml bump to go 1.4rc2 Dec 17, 2014

README.md

Circle CI Coverage Status Report Card Appveyor

Wellington

Join the chat at https://gitter.im/wellington/wellington

Wellington adds spriting to the lightning fast libsass. No need to learn a new tool, this all happens right in your Sass!

OS Support

Binaries are provided for Linux and OS X. Building from source will work on any os libSass supports. Windows support has been dropped due to https://github.com/wellington/wellington/issues/160

Use with Grunt or Gulp

See the Grunt example See the Gulp Example

Speed Matters

Benchmarks

# 40,000 line of code Sass project with 1200 images
wt         3.679s
compass   73.800s
# 20x faster!

For more benchmarks, see realbench

What it does

wt is a Sass preprocessor tool geared towards projects written in Sass. It focuses on tasks that make working on a Sass site friendlier and much faster. wt extends the Sass language to include spriting and image operations not currently possible in the core language.

$images: sprite-map("sprites/*.png");
div {
  width: image-width(sprite-file($images, "cat"));
  height: image-height(sprite-file($images, "cat"));
  background: sprite($images, "cat");
}

The output CSS

div {
  width: 140px;
  height: 79px;
  background: url("genimg/sprites-wehqi.png") 0px 0px;
}

Available commands

$ wt -h

wt is a Sass project tool made to handle large projects. It uses the libSass compiler for efficiency and speed.

Usage:
  wt [flags]
  wt [command]

Available Commands:
  serve       Starts a http server that will convert Sass to CSS
  compile     Compile Sass stylesheets to CSS
  watch       Watch Sass files for changes and rebuild CSS

Flags:
  -b, --build="": Path to target directory to place generated CSS, relative paths inside project directory are preserved
      --comment[=true]: Turn on source comments
  -c, --config="": Temporarily disabled: Location of the config file
      --cpuprofile="": Go runtime cpu profilling for debugging
      --css-dir="": Compass backwards compat, does nothing. Reference locations relative to Sass project directory
      --debug[=false]: Show detailed debug information
  -d, --dir="": Path to locate images for spriting and image functions
      --font=".": Path to directory containing fonts
      --gen=".": Path to place generated images
      --images-dir="": Compass backwards compat, use -d instead
      --javascripts-dir="": Compass backwards compat, ignored
      --no-line-comments[=false]: UNSUPPORTED: Disable line comments
  -p, --proj="": Path to directory containing Sass stylesheets
      --relative-assets[=false]: UNSUPPORTED: Make compass asset helpers generate relative urls to assets.
      --sass-dir="": Compass backwards compat, use -p instead
  -s, --style="nested": nested style of output CSS
                        available options: nested, expanded, compact, compressed
      --time[=false]: Retrieve timing information
  -v, --version[=false]: Show the app version

Use "wt [command] --help" for more information about a command.

Try before you buy

You can try out Wellington on Codepen, fork the Wellington Playground! This live example has images you can use, or you can bring your Sass.

There are many examples on Codepen just see the Wellington collection

Installation

Wellington can be installed via brew

brew install wellington
wt -h

Building from source

Install Go and add $GOPATH/bin to your $PATH. Detailed instructions. Wellington requires Go 1.3.1+.

go get -u github.com/wellington/wellington/wt

# You should now have wt in your path
wt -h

Or, use wellington from a docker container

docker run -v $(pwd):/data -it drewwells/wellington wt compile proj.scss

Documentation

Why?

Sass is a fantastic language. It adds a lot of power to standard CSS. If only our clients were happy with the functionality that Sass provided. For the life of Sass, there has been only one tool that attempted to extend Sass for everything that's needed to build a site. While Ruby is great for development, it does have some drawbacks. As our Sass powered website grew, Compass and Ruby Sass started to become a real drag on build times and development happiness. A typical build including transpiling Sass to CSS, RequireJS JavaScript, and minfication of CSS, JS, and images would spend half the time processing the Sass.

There had to be a better way. Libsass was starting to gain some traction, but it didn't do everything we needed. So I wrote Wellington to be a drop in replacement for the spriting functions familar to those used to Compass. This makes it super simple to swap out Compass with Wellington in your Sass projects.

See how the sausage is made

Testing

make test

Profiling

make profile

Set your fork as the origin.

cd $GOPATH/src/github.com/wellington/wellington
git remote rm origin
git remote add origin git@github.com:username/wellington.git

Build a Docker Container. The wt container is 33.6 MB in size, but builds in a much larger container 844.7 MB.

make build
make docker #launch a container

Please use pull requests for contributing code. CircleCI will automatically test and lint your contributions. Thanks for helping!

Getting Help

Ask questions in the QA forum on Google Group

License

Wellington is licensed under MIT.

Bitdeli Badge