Skip to content

💎 A Ruby shim for SassC that will communicate with Embedded Dart Sass using the Embedded Sass protocol

License

Notifications You must be signed in to change notification settings

sass-contrib/sassc-embedded-shim-ruby

Repository files navigation

Embedded Sass Shim for SassC Ruby

build gem

Use sass-embedded with SassC Ruby!

This library shims sassc with the sass-embedded implementation.

Which Sass implementation should I use for my Ruby project?

Install

Add this line to your application's Gemfile:

gem 'sassc-embedded'

And then execute:

bundle

Or install it yourself as:

gem install sassc-embedded

Usage

This shim utilizes sass-embedded to allow you to compile SCSS or SASS syntax to CSS. To compile, use a SassC::Engine, e.g.:

require 'sassc-embedded'

SassC::Engine.new(sass, style: :compressed).render

Most of the original sassc options are supported with no behavior difference unless noted otherwise:

  • :filename
  • :quiet
  • :precision - ignored
  • :line_comments - ignored
  • :syntax
  • :source_map_embed
  • :source_map_contents
  • :omit_source_map_url
  • :source_map_file
  • :importer
  • :functions
  • :style - :nested and :compact behave as :expanded
  • :load_paths

See sassc-ruby source code and libsass documentation for details.

Additional sass-embedded options are supported:

  • :charset
  • :importers
  • :alert_ascii
  • :alert_color
  • :fatal_deprecations
  • :future_deprecations
  • :logger
  • :quiet_deps
  • :silence_deprecations
  • :verbose

See sass-embedded documentation for details.

Troubleshooting

The original sassc gem is still being used instead of sassc-embedded

When launching an application via bundle exec, it puts sassc-embedded at higher priority than sassc in $LOAD_PATH. You can verify the order of $LOAD_PATH with the following command:

bundle exec ruby -e 'puts $LOAD_PATH'

If you see sassc has higher priority than sassc-embedded, try remove sassc:

bundle remove sassc

If your application has a transitive dependency on sassc that cannot be removed, you can use one of the following workarounds.

Workaround One

Add this line to your application's Gemfile:

gem 'sassc', github: 'sass/sassc-ruby', ref: 'refs/pull/233/head'

And then execute:

bundle

The fork of sassc at sass/sassc-ruby#233 will load the shim whenever require 'sassc' is invoked, meaning no other code changes needed in your application.

Workaround Two

Add this line to your application's code:

require 'sassc-embedded'