Class Sass::Plugin::Compiler
In: lib/sass/plugin/compiler.rb
Parent: Object

The Compiler class handles compilation of multiple files and/or directories, including checking which CSS files are out-of-date and need to be updated and calling Sass to perform the compilation on those files.

{Sass::Plugin} uses this class to update stylesheets for a single application. Unlike {Sass::Plugin}, though, the Compiler class has no global state, and so multiple instances may be created and used independently.

If you need to compile a Sass string into CSS, please see the {Sass::Engine} class.

Unlike {Sass::Plugin}, this class doesn‘t keep track of whether or how many times a stylesheet should be updated. Therefore, the following `Sass::Plugin` options are ignored by the Compiler:

  • `:never_update`
  • `:always_check`

Methods

Included Modules

Configuration

Public Class methods

Creates a new compiler.

@param opts [{Symbol => Object}]

  See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.

Public Instance methods

Remove all output files that would be created by calling update_stylesheets, if they exist.

This method runs the deleting_css and deleting_sourcemap callbacks for the files that are deleted.

@param individual_files [Array<(String, String[, String])>]

  A list of files to check for updates
  **in addition to those specified by the
  {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.**
  The first string in each pair is the location of the Sass/SCSS file,
  the second is the location of the CSS file that it should be compiled to.
  The third string, if provided, is the location of the Sourcemap file.

Non-destructively modifies \{options} so that default values are properly set, and returns the result.

@param additional_options [{Symbol => Object}] An options hash with which to merge \{options} @return [{Symbol => Object}] The modified options hash

Construct a list of files that might need to be compiled from the provided individual_files and the template_locations.

Note: this method does not cache the results as they can change across invocations when sass files are added or removed.

@param individual_files [Array<(String, String[, String])>]

  A list of files to check for updates
  **in addition to those specified by the
  {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.**
  The first string in each pair is the location of the Sass/SCSS file,
  the second is the location of the CSS file that it should be compiled to.
  The third string, if provided, is the location of the Sourcemap file.

@return [Array<(String, String, String)>]

  A list of [sass_file, css_file, sourcemap_file] tuples similar
  to what was passed in, but expanded to include the current state
  of the directories being updated.

Updates out-of-date stylesheets.

Checks each Sass/SCSS file in {file:SASS_REFERENCE.md#template_location-option `:template_location`} to see if it‘s been modified more recently than the corresponding CSS file in {file:SASS_REFERENCE.md#css_location-option `:css_location`}. If it has, it updates the CSS file.

@param individual_files [Array<(String, String[, String])>]

  A list of files to check for updates
  **in addition to those specified by the
  {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.**
  The first string in each pair is the location of the Sass/SCSS file,
  the second is the location of the CSS file that it should be compiled to.
  The third string, if provided, is the location of the Sourcemap file.

Watches the template directory (or directories) and updates the CSS files whenever the related Sass/SCSS files change. `watch` never returns.

Whenever a change is detected to a Sass/SCSS file in {file:SASS_REFERENCE.md#template_location-option `:template_location`}, the corresponding CSS file in {file:SASS_REFERENCE.md#css_location-option `:css_location`} will be recompiled. The CSS files of any Sass/SCSS files that import the changed file will also be recompiled.

Before the watching starts in earnest, `watch` calls \{update_stylesheets}.

Note that `watch` uses the [Listen](github.com/guard/listen) library to monitor the filesystem for changes. Listen isn‘t loaded until `watch` is run. The version of Listen distributed with Sass is loaded by default, but if another version has already been loaded that will be used instead.

@param individual_files [Array<(String, String[, String])>]

  A list of files to check for updates
  **in addition to those specified by the
  {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.**
  The first string in each pair is the location of the Sass/SCSS file,
  the second is the location of the CSS file that it should be compiled to.
  The third string, if provided, is the location of the Sourcemap file.

@param options [Hash] The options that control how watching works. @option options [Boolean] :skip_initial_update

  Don't do an initial update when starting the watcher when true

[Validate]