SCSS-Lint
scss-lint is a tool to help keep your SCSS files
clean and readable. You can run it manually from the command-line, or integrate
it into your SCM hooks. It uses rules
established by the team at Causes.com.
- Requirements
- Installation
- Usage
- Configuration
- Formatters
- Linters
- Editor Integration
- Git Integration
- Documentation
- Contributing
- Changelog
- License
Requirements
- Ruby 1.9.3+
- Sass 3.3.0+
- Files you wish to lint must be written in SCSS (not Sass) syntax
Installation
gem install scss-lintUsage
Run scss-lint from the command-line by passing in a directory (or multiple
directories) to recursively scan:
scss-lint app/assets/stylesheets/You can also specify a list of files explicitly:
scss-lint app/assets/stylesheets/**/*.css.scssscss-lint will output any problems with your SCSS, including the offending
filename and line number (if available).
| Command Line Flag | Description |
|---|---|
-c/--config |
Specify a configuration file to use |
-e/--exclude |
Exclude one or more files from being linted |
-f/--format |
Output format (see Formatters) |
-i/--include-linter |
Specify which linters you specifically want to run |
-x/--exclude-linter |
Specify which linters you don't want to run |
-h/--help |
Show command line flag documentation |
--show-linters |
Show all registered linters |
-v/--version |
Show version |
Configuration
scss-lint will automatically recognize and load any file with the name
.scss-lint.yml as a configuration file. It loads the configuration based on
the location of the file being linted, starting from that file's directory and
ascending until a configuration file is found. Any configuration loaded is
automatically merged with the default configuration (see config/default.yml).
Here's an example configuration file:
inherit_from: '../../inherited-config.yml'
exclude: 'app/assets/stylesheets/plugins/**'
linters:
BorderZero:
enabled: false
exclude:
- 'path/to/file.scss'
- 'path/to/directory/**'
Indentation:
enabled: true
width: 2All linters have an enabled option which can be true or false, which
controls whether the linter is run, along with linter-specific options. The
defaults are defined in config/default.yml.
The inherit_from directive allows a configuration file to inherit settings
from another configuration file. The file specified by inherit_from is loaded
and then merged with the settings in the current file (settings in the current
file overrule those in the inherited file).
The exclude directive allows you to specify a glob pattern of files that
should not be linted by scss-lint. Paths are relative to the location of the
config file itself if they are not absolute paths. If an inherited file
specifies the exclude directive, the two exclusion lists are combined. Any
additional exclusions specified via the --exclude flag are also combined. If
you need to exclude files for a single linter you can specify the list of files
using the linter's exclude configuration option.
You can also configure scss-lint by specifying a file via the --config
flag, but note that this will override any configuration files that scss-lint
would normally find on its own (this can be useful for testing a particular
configuration setting, however). Configurations loaded this way will still be
merged with the default configuration specified by config/default.yml.
Formatters
Default
The default formatter is intended to be easy to consume by both humans and external tools.
test.scss:2 [W] Prefer single quoted strings
test.scss:2 [W] Line should be indented 0 spaces, but was indented 1 space
test.scss:5 [W] Prefer single quoted strings
test.scss:6 [W] URLs should be enclosed in quotes
Files
Useful when you just want to open all offending files in an editor. This will just output the names of the files so that you can execute the following to open them all:
scss-lint --format Files | xargs vimXML
Outputs XML with <lint>, <file>, and <issue> tags. Suitable for
consumption by tools like Jenkins.
<?xml version="1.0" encoding="utf-8"?>
<lint>
<file name='test.css'>
<issue line='2' severity='warning' reason='Prefer single quoted strings' />
<issue line='2' severity='warning' reason='Line should be indented 0 spaces, but was indented 1 spaces' />
<issue line='5' severity='warning' reason='Prefer single quoted strings' />
<issue line='6' severity='warning' reason='URLs should be enclosed in quotes' />
</file>
</lint>
Linters
scss-lint is a customizable tool with opinionated defaults that helps you
enforce a consistent style in your SCSS. For these opinionated defaults, we've
had to make calls about what we think are the "best" style conventions, even
when there are often reasonable arguments for more than one possible style.
Should you want to customize the checks run against your code, you can do so by editing your configuration file to match your preferred style.
Editor Integration
Vim
You can have scss-lint automatically run against your SCSS files after saving
by using the Syntastic plugin. If
you already have the plugin, just add
let g:syntastic_scss_checkers = ['scss_lint'] to your .vimrc.
Sublime Text
Install the Sublime scss-lint plugin.
Git Integration
If you'd like to integrate scss-lint into your Git workflow, check out our
Git hook manager, overcommit.
Documentation
Code documentation is generated with YARD and hosted by RubyDoc.info.
Contributing
We love getting feedback with or without pull requests. If you do add a new feature, please add tests so that we can avoid breaking it in the future.
Speaking of tests, we use rspec, which can be run like so:
bundle exec rspecChangelog
If you're interested in seeing the changes and bug fixes between each version
of scss-lint, read the SCSS-Lint Changelog.
License
This project is released under the MIT license.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.




