Sassconf

Build Status Gem Version

With the Sassconf command tool you can use a config file for defining your Sass options. If you liked the config file in any Compass environment then you'll like that one also because it's very similar :)

Requirements

Supported and tested ruby versions

  • Ruby
    • 1.9.2 and up
  • JRuby
    • 1.7.18 and up

Installation

Install it directly from RubyGems:

  gem install sassconf

Usage

General usage:

  sassconf [options] [INPUT] [OUTPUT]

You can type:

  sassconf -h

or only:

  sassconf

in your console for show the help text.

Config File

Create a ruby config file like: "config.rb".

For using options from Sass you have to use special variable prefixes "arg_NAME" and "varg_NAME".

  • "arg_NAME" for any Sass options without a "=" sign like:
  --style
  --load-path
  --no-cache
  ...
  • "varg_NAME" for any Sass options with a "=" sign like:
  --sourcemap

If there is an option with a "-" sign, you have to replace it with a "_" sign in your variable like:

   "no-cache" changes to "arg_no_cache"
    ```

    If there is an option without a value, you have to define it with the symbol ":no_value" like:

    ```ruby
    arg_no_cache = :no_value
    ```

   Example config:

   ```ruby
   arg_style = 'compressed'
   arg_load_path = '/your/path'
   arg_no_cache = :no_value
   varg_sourcemap = 'none'
   arg_precision = 10

You can also set a list of values on the command line which you can use in your config file:

  sassconf --config /path/config.rb --args value1,value2,value3

In your config file you have to use the array "extern_args" like:

   extern_args[0] #For "value1"
   extern_args[1] #For "value2"
   extern_args[2] #For "value3"
   arg_style = 'compressed'
   ...

CommandLine Options

Required Options

  • -c, --config CONFIG_FILE
    • Specify a ruby config file e.g.: /PATH/config.rb

Optional Options

  • -a, --args ARGS

    • Comma separated list of values e.g.: val_a, val_b,...
  • v, --verbose

    • Print all log messages.
  • -?, -h, --help

    • Show help text.

Examples

Sample 1 - Input Output File

config.rb

  production = false
  arg_no_cache = :no_value
  varg_style = production ? 'compressed' : 'expanded'
  varg_sourcemap = 'none'

input.scss

  $color: #3BBECE;

  .navigation {
  border-color: $color;
  color: darken($color, 9%);
  }

In console type:

  sassconf -c ./config.rb ./input.scss ./output.css

Result:

output.css

  .navigation {
  border-color: #3BBFCE;
  color: #2ca2af;
  }

Sample 2 - Use a "Filewatcher"

config.rb

  production = false
  arg_no_cache = :no_value
  varg_style = production ? 'compressed' : 'expanded'
  varg_sourcemap = 'none'
  arg_watch = "./:./out"

input.scss

  $color: #3BBECE;

  .navigation {
  border-color: $color;
  color: darken($color, 9%);
  }

In console type:

  sassconf -c ./config.rb

Console Output:

  >>> Sass is watching for changes. Press Ctrl-C to stop.
  directory ./out
      write ./out/input.css

Result:

/out/input.css

  .navigation {
  border-color: #3BBFCE;
  color: #2ca2af;
  }

Sample 3 - Use in JetBrains IDE (WebStorm)

Use Sassconf in e.g. WebStorm with a FileWatcher

All ".scss" files are in a "sass" directory. All generated ".css" files goes to a "css" directory.

In WebStorm create a normal SCSS FileWatcher:

  File->Settings->Tools->File Watchers

  Program: sassconf
  Arguments: -c ./config.rb -a "$ProjectFileDir$,$FileName$,$FileNameWithoutAllExtensions$"
  Working Directory: $ProjectFileDir$

Your WebStorm project config.rb file:

config.rb

  project_dir = extern_args[0]
  file_name = extern_args[1]
  file_name_without_extension = extern_args[2]

  production = false
  arg_no_cache = :no_value
  varg_style = production ? 'compressed' : 'expanded'
  varg_sourcemap = 'none'
  arg_update = "\"#{project_dir}/sass/#{file_name}:#{project_dir}/css/#{file_name_without_extension}.css\""