Compile Sass to CSS
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-contrib-sass --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-contrib-sass');
Run this task with the grunt sass
command.
Sass is a preprocessor that adds nested rules, variables, mixins and functions, selector inheritance, and more to CSS. Sass files compile into well-formatted, standard CSS to use in your site or application.
This task requires you to have Ruby and Sass installed. If you're on OS X or Linux you probably already have Ruby installed; test with ruby -v
in your terminal. When you've confirmed you have Ruby installed, run gem install sass
to install Sass.
Note: Files that begin with "_" are ignored even if they match the globbing pattern. This is done to match the expected Sass partial behaviour.
Type: String
Default: auto
Values:
auto
- relative paths where possible, file URIs elsewherefile
- always absolute file URIsinline
- include the source text in the sourcemapnone
- no sourcemaps
Requires Sass 3.4.0, which can be installed with gem install sass
Type: Boolean
Default: false
Show a full traceback on error.
Type: Boolean
Default: false
on Windows, otherwise true
Force Unix newlines in written files.
Type: Boolean
Default: false
Just check the Sass syntax, does not evaluate and write the output.
Type: String
Default: nested
Output style. Can be nested
, compact
, compressed
, expanded
.
Type: Number
Default: 5
How many digits of precision to use when outputting decimal numbers.
Type: Boolean
Default: false
Silence warnings and status messages during compilation.
Type: Boolean
Default: false
Make Compass imports available and load project configuration (config.rb
located close to the Gruntfile.js
).
Type: Boolean
Default: false
Emit extra information in the generated CSS that can be used by the FireSass Firebug plugin.
Type: Boolean
Default: false
Emit comments in the generated CSS indicating the corresponding source line.
Type: String|Array
Add a (or multiple) Sass import path.
Type: String|Array
Require a (or multiple) Ruby library before running Sass.
Type: String
Default: .sass-cache
The path to put cached Sass files.
Type: Boolean
Default: false
Don't cache to sassc files.
Type: Boolean
Default: false
Run sass
with bundle exec: bundle exec sass
.
Type: Boolean
Default: false
Only compile changed files.
grunt.initConfig({
sass: { // Task
dist: { // Target
options: { // Target options
style: 'expanded'
},
files: { // Dictionary of files
'main.css': 'main.scss', // 'destination': 'source'
'widgets.css': 'widgets.scss'
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.registerTask('default', ['sass']);
grunt.initConfig({
sass: {
dist: {
files: {
'main.css': 'main.scss'
}
}
}
});
Instead of concatenating the files, just @import
them into another .sass
file eg. main.scss
.
You can specify multiple destination: source
items in files
.
grunt.initConfig({
sass: {
dist: {
files: {
'main.css': 'main.scss',
'widgets.css': 'widgets.scss'
}
}
}
});
Instead of naming all files you want to compile, you can use the expand
property allowing you to specify a directory. More information available in the grunt docs - Building the files object dynamically
.
grunt.initConfig({
sass: {
dist: {
files: [{
expand: true,
cwd: 'styles',
src: ['*.scss'],
dest: '../public',
ext: '.css'
}]
}
}
});
- 2016-03-04 v1.0.0 Bump
chalk
. Update to docs and project structure. - 2015-02-06 v0.9.0 Remove
banner
option. Allow using--force
to ignore compile errors. Increase concurrency count from2
to4
. Improve Windows support. - 2014-08-24 v0.8.1 Fix
check
option. - 2014-08-21 v0.8.0 Support Sass 3.4 Source Map option. Add
update
option. - 2014-08-09 v0.7.4 Fix
bundleExec
option. Fixos.cpus()
issue. Logsass
command when--verbose
flag is set. - 2014-03-06 v0.7.3 Only create empty dest files when they don't already exist.
- 2014-02-02 v0.7.2 Fix error reporting when Sass is not available.
- 2014-01-28 v0.7.1 Fix regression of Bundler support.
- 2014-01-26 v0.7.0 Improve Windows support.
- 2013-12-10 v0.6.0 Ignore files where filename have leading underscore.
- 2013-08-21 v0.5.0 Add
banner
option. - 2013-07-06 v0.4.1 Use
file.orig.src
iffile.src
does not exist and return early to avoid passing non-existent files to sass binary. - 2013-06-30 v0.4.0 Rewrite task to be able to support Source Maps. Compile Sass files in parallel for better performance.
- 2013-03-26 v0.3.0 Add support for
bundle exec
. Make sure.css
files are compiled with SCSS. - 2013-02-15 v0.2.2 First official release for Grunt 0.4.0.
- 2013-01-25 v0.2.2rc7 Updating grunt/gruntplugin dependencies to rc7. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.
- 2013-01-09 v0.2.2rc5 Updating to work with grunt v0.4.0rc5. Switching to
this.files
API. Addseparator
option. - 2012-11-05 v0.2.0 Grunt 0.4 compatibility. Improve error message when Sass binary couldn't be found
- 2012-10-12 v0.1.3 Rename grunt-contrib-lib dep to grunt-lib-contrib.
- 2012-10-08 v0.1.2 Fix regression for darwin.
- 2012-10-05 v0.1.1 Windows support.
- 2012-09-24 v0.1.0 Initial release.
Task submitted by Sindre Sorhus
This file was generated on Fri Mar 18 2016 19:07:34.