stylelint-sass-render-errors
Version:
Display Sass render errors and deprecations as lint errors.
129 lines (86 loc) • 3.82 kB
Markdown
# stylelint-sass-render-errors
[![Build Status][ci-img]][ci]
Display Sass render errors and deprecations as lint errors.
Implementation details:
- Sass deprecations are treated same as errors since
[Sass tries to move language forward](https://github.com/sass/libsass/issues/2822#issuecomment-482914373)
and each deprecation should be corrected as soon as possible in your codebase
- Plugin operates on each file in isolation so if you have global `@import` statements, they won’t
be applied and you could get errors for e.g. undefined variables. Recommendation is to switch to
[Sass modules](https://sass-lang.com/documentation/modules) and
[`@use`/`@forward` statements](https://sass-lang.com/documentation/at-rules/use)
- Sass (_only Dart Sass is supported_) should be installed as peer dependancy because each version
has different set of errors and deprecations and you should get results for Sass version your
application uses
## Install
```sh
npm install stylelint-sass-render-errors --save-dev
```
## Usage
Add this config to your `.stylelintrc`:
```json
{
"plugins": ["stylelint-sass-render-errors"],
"rules": {
"plugin/sass-render-errors": true
}
}
```
<!-- prettier-ignore-start -->
```scss
@use 'sass:color';
@use 'sass:math';
.becky {
color: color.invert(1);
/** ↑
* Passing a number (1) to color.invert() is deprecated. Recommendation: invert(1). */
}
#marley {
width: math.percentage(100 / 2);
/** ↑
* Using / for division is deprecated and will be removed in Dart Sass 2.0.0. Recommendation: math.div(100, 2). More info and automated migrator: https://sass-lang.com/d/slash-div. */
}
```
<!-- prettier-ignore-end -->
## Options
Plugin accepts either boolean (`true`) or object configuration.
If boolean, it will use default configuration:
- `sass.render` for rendering Sass files and resolving errors and deprecations
- Undefined functions are not checked
- No options for Sass renderer other than `file` if file is linted or `data` if CSS string is
linted
If object configuration, following properties are valid:
### sync
Type: `boolean`
Default: `false`
Rendering mode for Sass render. Can be either `false` for `sass.compileAsync` and
`sass.compileStringAsync` or `true` for `sass.compile` and `sass.compileString`.
### sassOptions
Type: `string|sass.Options|sass.StringOptions`
If object, it is either
[`sass.Options`](https://sass-lang.com/documentation/js-api/interfaces/options/) or
[`sass.StringOptions`](https://sass-lang.com/documentation/js-api/interfaces/stringoptions/).
If string, it is config file location which returns one of the following default exports:
- Sass options object
- Async or regular function returning Sass options object
Config file location is [resolved](https://github.com/sindresorhus/resolve-from) relatively from the
[closest `package.json` location](https://github.com/sindresorhus/pkg-up) inside current working
directory.
### checkUndefinedFunctions
Type: `boolean`
Default: `false`
[Check undefined functions](https://github.com/niksy/sass-render-errors#undefined-functions).
### disallowedKnownCssFunctions
Type: `string[]`
Default: `[]`
[List of disallowed known CSS functions](https://github.com/niksy/sass-render-errors#options).
### additionalKnownCssFunctions
Type: `string[]`
Default: `[]`
[List of additional known CSS functions](https://github.com/niksy/sass-render-errors#options).
## License
MIT © [Ivan Nikolić](http://ivannikolic.com)
<!-- prettier-ignore-start -->
[ci]: https://github.com/niksy/stylelint-sass-render-errors/actions?query=workflow%3ACI
[ci-img]: https://github.com/niksy/stylelint-sass-render-errors/actions/workflows/ci.yml/badge.svg?branch=master
<!-- prettier-ignore-end -->