postcss-selector-lint
v1.0.2
Published
Allows/disallows using certain selector types (type, .class, #id, *universal [attribute] :pseudo) at either global or local level (.global > .local).
Downloads
4,194
Maintainers
Readme
PostCSS Selector Lint
🐱 Please don't use CSS selectors of type "id" in global scope (stylesheet.css:11,1 "#header").
PostCSS Selector Lint warns about disallowed selector types in either 'global' or 'local' scope. This helps preventing scope pollution by warning about non-nested type (tag) selectors which might have unwanted side-effects.
"Only use class names in selectors, no IDs or HTML tag names." -- kandl-style-guide.
The configuration of this linter is fully customizable.
Installation
Install with npm
npm install --save-dev postcss-selector-lint
Usage
var postcss = require('postcss')
var selectorLint = require('postcss-selector-lint')
var config = {}; // Optional
postcss([selectorLint(config)]);
Terminology
Scope types:
- Global: non-nested selectors -
h1
- Local: nested selectors -
.wysiwyg h1
Selector types
- Type: Tag type -
h1
- Class: Tag class -
.wysiwyg
- Id: Tag id -
#nav
- universal: Universal selector -
*
- attribute: Attribute selector-
input[type=checkbox]
- pseudo: Pseudo class selector-
h1:before
Configuration
Default:
The default configuration only lets you use class
selectors in global
scope. In local
(nested) scope, type
(h1),
universal
(*) and attribute
([type=checkbox]) are also allowed.
Configuration scheme:
const config = {
global: {
type: false,
class: true,
id: false,
universal: false,
attribute: false,
psuedo: false,
},
local: {
type: true,
class: true,
id: false,
universal: true,
attribute: true,
psuedo: true,
},
options: {
excludedFiles: [''], // Allows filenames to be excluded from linting.
}
};
Running tests
npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Author
Maykin Media
License
Copyright © 2020 Maykin Media Licensed under the MIT license.