@jhae/stylelint-config-verifier
Version:
A Stylelint configuration tester for Jest that helps you verify your defined rules.
152 lines (112 loc) • 3.77 kB
Markdown




Does your [Stylelint](https://github.com/stylelint/stylelint) configuration meet your expectations? Easily test
individual rules with [Jest](https://github.com/jestjs/jest) using code snippets and ensure that errors and warnings are
being reported correctly.
Using npm:
```shell
npm install --save-dev @jhae/stylelint-config-verifier
```
Example Stylelint configuration file:
```yaml
rules:
at-rule-disallowed-list:
- debug
- import
```
Verifying the `at-rule-disallowed-list` rule configuration:
```javascript
import { ConfigVerifier } from '@jhae/stylelint-config-verifier';
new ConfigVerifier().verify(
// Pass the name of the rule.
'at-rule-disallowed-list',
// Describe one or more test cases.
{
// Give the test case a name.
name: 'Disallow @debug rule',
// Place the code to be tested against the configuration file here.
code: '@debug "";',
// Define the expectation.
expect: {
// Whether Stylelint should report an error or not.
errored: true,
// The messages that Stylelint should report.
messages: ['Unexpected at-rule "debug"'],
// The severities that Stylelint should report for each message.
severities: ['error'],
},
},
{
name: 'Disallow @import rule',
code: `
@import "test-1.css";
@import "test-2.css";
`,
expect: {
errored: true,
messages: ['Unexpected at-rule "import"', 'Unexpected at-rule "import"'],
severities: ['error', 'error'],
},
},
{
// The expectation can be omitted if Stylelint should not report errors.
name: 'Allow @use rule',
code: '@use "test.scss";',
},
);
```
The verification result:
```shell
Rule 'at-rule-disallowed-list'
✓ Disallow @debug rule (1 ms)
✓ Disallow @import rule (1 ms)
✓ Allow @use rule (1 ms)
```
It is also possible to pass a file to the test case. This is useful for testing overrides, for example.
Example Stylelint configuration file:
```yaml
rules:
at-rule-disallowed-list:
- import
overrides:
- files:
- '*.css'
- '**/*.css'
rules:
at-rule-disallowed-list: null
```
The CSS file, for example `at-rule-disallowed-list.css`:
```css
@import 'test.css';
```
Verifying the `at-rule-disallowed-list` rule configuration:
```javascript
import { ConfigVerifier } from '@jhae/stylelint-config-verifier';
new ConfigVerifier().verify('at-rule-disallowed-list', {
name: 'Allow @import rule in CSS files',
// Pass the file instead of inline code.
file: 'at-rule-disallowed-list.css',
});
```
By default, the config verifier looks for a `.stylelintrc.yaml` configuration file. If a different location or file name
is used, the path to it can be specified as a constructor argument.
```javascript
import { ConfigVerifier } from '@jhae/stylelint-config-verifier';
new ConfigVerifier('path/to/stylelint.config.js').verify();
```
```javascript
const { ConfigVerifier } = require('@jhae/stylelint-config-verifier');
new ConfigVerifier().verify();
```
---
Check out the [Standard SCSS Stylelint Config](https://github.com/jhae-de/stylelint-config-standard-scss) tests for more
examples.