Rule no-css-comments will enforce the use of Sass single-line comments and disallow CSS comments. Bang comments (/*! */, will be printed even in minified mode) are still allowed.
Examples
When enabled the following are allowed:
// This is a good comment
// =========
// This is a good comment
// =========
//////////////////
// This is a good comment
//////////////////
/*! This is a good bang comment */
/*!
* This is a good bang comment
**/
When enabled the following are disallowed:
/* This comment will appear in your compiled css */
/*
* Mulitline comments are bad
*/
Clean Import Paths
Rule clean-import-paths will enforce whether or not @import paths should have leading underscores and/or filename extensions.
Options
leading-underscore: true/false (defaults to false)
filename-extension: true/false (defaults to false)
Examples
leading-underscore
When leading-underscore: false, the following are allowed. When leading-underscore: true, the following are disallowed:
@import'foo';
@import'bar/foo';
When leading-underscore: true, the following are allowed. When leading-underscore: false, the following are disallowed:
@import'_foo';
@import'_bar/foo';
filename-extension
When filename-extension: false, the following are allowed. When filename-extension: true, the following are disallowed:
@import'foo';
@import'bar/foo';
When filename-extension: true, the following are allowed. When filename-extension: false, the following are disallowed:
@import'foo.scss';
@import'bar/foo.scss';
No Important
Rule no-important will enforce that important declarations are not allowed to be used.
Examples
When enabled, the following are disallowed:
.foo {
content:'bar'!important;
}
No Color Literals
Rule no-color-literals will disallow the use of color literals and basic color functions in any declarations other than variables or maps/lists.
The list of affected color functions are as follows:
* rgb
* rgba
* hsl
* hsla
Other color functions, such as adjust-color and mix, may be used, but the original color must be passed in as a variable.
Options
allow-map-identifiers: true/false (defaults to true)
allow-rgba: true/false (defaults to false)
allow-variable-identifiers: true/false (defaults to true)
Examples
When enabled and default options are used the following are disallowed.
.literal {
color:mediumslateblue;
}
.linear-gradient-func {
background:linear-gradient(top,#fff,white);
}
.box-shadow {
box-shadow:1px1pxblack,1px1pxblack;
}
.background {
background:1px solid white;
}
.hex {
color:#fff;
}
// rgb function passed directly as function argument
.adj {
color:adjust-color(rgb(255,0,0),$blue:5);
}
// hsl function passed directly as function argument
When enabled and allow-rgba is set to true, the following will be allowed:
// rgba in variables is still fine
$rgba:rgba(255,0,0,.5);
$red:rgb(255,255,255,);
// rgba can be used directly to alter a variables opacity
.color {
color:rgba($red,.3);
}
In addition, when enabled and allow-rgba is set to true, the following will be disallowed:
.color {
// you must use variables and not literals
color:rgba(0,0,0,.3);
color:rgba(black,.3);
}
[allow-variable-identifiers: false]
When enabled and allow-variable-identifiers is set to false, the following will be disallowed
// variable uses a color literal as an identifier
$black:#000
// variable using a color literal as an identifier is passed to a function
.test {
color:adjust-color($off-red,$blue:5)
}
When enabled and allow-variable-identifiers is set to false, the following will be allowed
// variable not directly using a color literal as an identifier
$primary-black:#000
[allow-map-identifiers: false]
When enabled and allow-map-identifiers is set to false, the following will be disallowed
// map identifiers red, blue and orange share their name with a
// color literal and therefore shouldn't be used
$colors:(
red:#f00,
blue:(
orange:$orange
)
)
When enabled and allow-map-identifiers is set to false, the following will be allowed
$colors:(
primary-red:#f00,
map-blue:(
off-orange:$orange
)
)
Class Name Format
Rule class-name-format will enforce a convention for class names.
Options
allow-leading-underscore: true/false (defaults to true)
convention: 'hyphenatedlowercase' (default), camelcase, snakecase, strictbem,
hyphenatedbem,
or a Regular Expression that the class name must match (e.g. ^[_A-Z]+$)
convention-explanation: Custom explanation to display to the user if a class doesn't adhere to the convention
When enabled and allow-rgba is set to true, the following will be allowed:
// rgba in variables is still fine
$rgba:rgba(255,0,0,.5);
$red:rgb(255,255,255,);
// rgba can be used directly to alter a variables opacity
.color {
color:rgba($red,.3);
}
In addition, when enabled and allow-rgba is set to true, the following will be disallowed:
.color {
// you must use variables and not literals
color:rgba(0,0,0,.3);
color:rgba(black,.3);
}
[allow-variable-identifiers: false]
When enabled and allow-variable-identifiers is set to false, the following will be disallowed
// variable uses a color literal as an identifier
$black:#000
// variable using a color literal as an identifier is passed to a function
.test {
color:adjust-color($off-red,$blue:5)
}
When enabled and allow-variable-identifiers is set to false, the following will be allowed
// variable not directly using a color literal as an identifier
$primary-black:#000
[allow-map-identifiers: false]
When enabled and allow-map-identifiers is set to false, the following will be disallowed
// map identifiers red, blue and orange share their name with a
// color literal and therefore shouldn't be used
$colors:(
red:#f00,
blue:(
orange:$orange
)
)
When enabled and allow-map-identifiers is set to false, the following will be allowed
$colors:(
primary-red:#f00,
map-blue:(
off-orange:$orange
)
)
Class Name Format
Rule class-name-format will enforce a convention for class names.
Options
allow-leading-underscore: true/false (defaults to true)
convention: 'hyphenatedlowercase' (default), camelcase, snakecase, strictbem,
hyphenatedbem,
or a Regular Expression that the class name must match (e.g. ^[_A-Z]+$)
convention-explanation: Custom explanation to display to the user if a class doesn't adhere to the convention
Settings:
- convention: ^[_A-Z]+$
- convention-explanation: 'Class must contain only uppercase letters and underscores'
When enabled, the following are allowed:
.SCREAMING_SNAKE_CASE {
content:'';
}
.foo {
@extend .SCREAMING_SNAKE_CASE;
}
When enabled, the following are disallowed:
(Each line with a class will report Class must contain only uppercase letters and underscores when linted.)
.HYPHENATED-UPPERCASE {
content:'';
}
.snake_case {
content:'';
}
.foo {
@extend .camelCase;
}
Class Name Format
Rule class-name-format will enforce a convention for class names.
Options
allow-leading-underscore: true/false (defaults to true)
convention: 'hyphenatedlowercase' (default), camelcase, snakecase, strictbem,
hyphenatedbem,
or a Regular Expression that the class name must match (e.g. ^[_A-Z]+$)
convention-explanation: Custom explanation to display to the user if a class doesn't adhere to the convention
Settings:
- convention: ^[_A-Z]+$
- convention-explanation: 'Class must contain only uppercase letters and underscores'
When enabled, the following are allowed:
.SCREAMING_SNAKE_CASE {
content:'';
}
.foo {
@extend .SCREAMING_SNAKE_CASE;
}
When enabled, the following are disallowed:
(Each line with a class will report Class must contain only uppercase letters and underscores when linted.)
.HYPHENATED-UPPERCASE {
content:'';
}
.snake_case {
content:'';
}
.foo {
@extend .camelCase;
}
Leading Zero
Rule leading-zero will enforce whether or not decimal numbers should include a leading zero.
Options
include: true/false (defaults to false)
Examples
When include: false, the following are allowed. When include: true, the following are disallowed:
.foo {
font-size:.5em;
}
When include: true, the following are allowed. When include: false, the following are disallowed:
.foo {
font-size:0.5em;
}
Leading Zero
Rule leading-zero will enforce whether or not decimal numbers should include a leading zero.
Options
include: true/false (defaults to false)
Examples
When include: false, the following are allowed. When include: true, the following are disallowed:
.foo {
font-size:.5em;
}
When include: true, the following are allowed. When include: false, the following are disallowed:
.foo {
font-size:0.5em;
}
Class Name Format
Rule class-name-format will enforce a convention for class names.
Options
allow-leading-underscore: true/false (defaults to true)
convention: 'hyphenatedlowercase' (default), camelcase, snakecase, strictbem,
hyphenatedbem,
or a Regular Expression that the class name must match (e.g. ^[_A-Z]+$)
convention-explanation: Custom explanation to display to the user if a class doesn't adhere to the convention
Settings:
- convention: ^[_A-Z]+$
- convention-explanation: 'Class must contain only uppercase letters and underscores'
When enabled, the following are allowed:
.SCREAMING_SNAKE_CASE {
content:'';
}
.foo {
@extend .SCREAMING_SNAKE_CASE;
}
When enabled, the following are disallowed:
(Each line with a class will report Class must contain only uppercase letters and underscores when linted.)
.HYPHENATED-UPPERCASE {
content:'';
}
.snake_case {
content:'';
}
.foo {
@extend .camelCase;
}
Property Sort Order
Rule property-sort-order will enforce the order in which declarations are written.
Options
order: 'alphabetical', 'concentric', 'recess', 'smacss', or [array of properties] (defaults to alphabetical. Unknown properties are sorted alphabetically)
ignore-custom-properties: true/false (defaults to false)
When enabled (assuming order: alphabetical), the following are allowed:
.foo {
content:'baz';
height:100vh;
width:100vw;
}
When enabled (assuming order: alphabetical), the following are disallowed:
.foo {
width:100vw;
height:100vh;
content:'baz';
}
Custom Sort Orders
You have the option to create your own custom property sort orders. These are specified in your .sass-lint.yml file as below:
property-sort-order:
-1
-
order:
- border
- display
- color
When the custom order is specified as above, the following are allowed:
.foo {
border:1px solid blue;
display: block;
color:red;
}
When the custom order is specified as above, the following are disallowed:
.foo {
display: block;
color:red;
border:1px solid blue;
}
Ignore Custom Properties
When ignore-custom-properties: false (assume order: 'alphabetical') the following would be allowed
.foo {
border:1px solid blue;
color:red;
composes: heading;
display: block;
}
When ignore-custom-properties: false (assume order: 'alphabetical') the following would be disallowed
.foo {
composes: heading;// not in alphabetical order
border:1px solid blue;
color:red;
display: block;
}
When ignore-custom-properties: true (assume order: 'alphabetical') the following would be allowed
.foo {
composes: heading;// custom properties ignored
border:1px solid blue;
color:red;
display: block;
}
Empty Line Between Blocks
Rule empty-line-between-blocks will enforce whether or not nested blocks should include a space between the last non-comment declaration or not.
Options
include: true/false (defaults to true)
allow-single-line-rulesets: true/false (defaults to true)
Examples
include
When include: true, the following are allowed. When include: false, the following are disallowed:
.foo {
content:'foo';
.bar {
content:'bar';
// Waldo
&--baz {
content:'baz';
}
}
}
When include: false, the following are allowed. When include: true, the following are disallowed:
.foo {
content:'foo';
.bar {
content:'bar';
// Waldo
&--baz {
content:'baz';
}
}
}
allow-single-line-rulesets
When allow-single-line-rulesets: true, the following are allowed. When allow-single-line-rulesets: false, the following are disallowed:
.foo {content:'foo';}
.bar {content:'bar';}
.baz {content:'baz';}
Property Sort Order
Rule property-sort-order will enforce the order in which declarations are written.
Options
order: 'alphabetical', 'concentric', 'recess', 'smacss', or [array of properties] (defaults to alphabetical. Unknown properties are sorted alphabetically)
ignore-custom-properties: true/false (defaults to false)