Skip to content

sass/perl-libsass

Repository files navigation

CSS::Sass

Compile .scss and .sass files using LibSass

CSS::Sass provides a perl interface to LibSass, a nearly complete Sass compiler written in C++. It is currently at ruby sass 3.4 feature parity and heading towards 3.5 compatibility. It can compile .scss and .sass files.

Installation

Build Status Build status Coverage Status CPAN version

Manual installation:

  git clone https://github.com/sass/libsass
  cd libsass
  # disable plugins if you have problems compiling
  perl Makefile.PL --no-plugins
  make -j4 verbose=1
  make test verbose=1
  make install verbose=1

Standard CPAN:

  cpan CSS::Sass

CPAN-Minus*:

  cpanm CSS::Sass

CPAN-Minus* directly via github:

  cpanm git://github.com/sass/perl-libsass.git

(*) CPAN-Minus may not be installed by default, but there is a good chance your distribution has a package for it:

  # example for ubuntu:
  apt install cpanminus

On windows I recommend Strawberry Perl. Tip: Use dmake -PX instead of make -jX for manual installs.

Build Options

Since we need LibSass for perl-libsass, we need to compile the sources when building CSS::Sass. LibSass can be compiled in different ways and Makefile.PL knows some switches to support most common use cases:

$ perl Makefile.PL --help

CSS::Sass Makefile.PL end-user options:

  --sassc              Install optional sassc cli utility
  --plugins            Install optional libsass plugins (default)
  --library            Install libsass library (auto-enabled)
  --native-watcher     Depend on optimized file watcher module
  --help               This help screen

  The following options are for developers only:

  --debug              Build libsass in debug mode
  --profiling          Enable gcov profiling switches
  --compiler           Skips compiler autodetection (passed to CppGuess)
  --skip-manifest      Skips manifest generation (would need git repo)
  --skip-version       Skips generating libsass/VERSION (would need git repo)
  --update-deps        Update libsass and specs to latest master (needs git repo)
  --checkout-deps      Checkout submodules at linked commit (needs git repo)
  --get-versions       Show versions of all perl package (.pm) files
  --set-versions       Set versions of all perl package (.pm) files
  --patch-gcc44        Patch libsass for gcc44 compatibility
  --skip-git           Do not try to use anything git related

  You may use environment variables to set any option
  Prefix them with `PSASS_` and write all in uppercase
  e.g. --native-watcher becomes PSASS_NATIVE_WATCHER

Documentation

Before installing:

perldoc lib/CSS/Sass.pm

After installing:

man CSS::Sass

Or view converted markdown version

Command line utility

psass [options] [ path_in | - ] [ path_out | - ]
-v, --version                 print version
-h, --help                    print this help
-w, --watch                   start watchdog mode
-p, --precision=int           precision for float output
    --indent=string           set indent string used for output
    --linefeed=type           linefeed used for output [auto|unix|win|none]
-o, --output-file=file        output file to write result to
-t, --output-style=style      output style [expanded|nested|compressed|compact]
-P, --plugin-path=path        plugin load path (repeatable)
-I, --include-path=path       sass include path (repeatable)
-c, --source-comments         enable source debug comments
-l, --line-comments           synonym for --source-comments
    --line-numbers            synonym for --source-comments
-e, --source-map-embed        embed source-map in mapping url
-s, --source-map-contents     include original contents
-m, --source-map-file=file    create and write source-map to file
    --source-map-file-urls    create file urls for source paths
    --source-map-root=.       specific root for relative paths
    --no-source-map-url       omit sourceMappingUrl from output
    --benchmark               print benchmark for compilation time

Plugins may be pre-installed by CSS::Sass or from 3rd parties.
There are some options available for each known plugin.

    --all-plugins             enables all known plugins
    --list-plugin             print list of all known plugins
    --[name]-plugin           enables the plugin with [name]
    --no-[name]-plugin        disabled the plugin with [name]

Included default plugins

$ psass --list-plugins

Copyright And Licence

Copyright © 2013-2014 by David Caldwell
Copyright © 2014-2017 by Marcel Greter

This library is released under the MIT license.