Package Exports
- postcss-bem-linter
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (postcss-bem-linter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
postcss-bem-linter
A PostCSS plugin to lint BEM-style CSS, ported from rework-suit-conformance Currently only supports the SUIT CSS methodology.
Installation
npm install postcss-bem-linterConformance tests
Default mode:
- Only allow selectors that begin with a class matching the defined
ComponentName. - Only allow custom-property names that begin with the defined
ComponentName. - The
:rootselector can only contain custom-properties. - The
:rootcannot be combined with other selectors.
Strict mode:
- All the tests in "default mode".
- Disallow selectors that contain any classes that do not match the SUIT CSS conventions.
- Disallow selectors that contain classes of other components.
Use
Defining a component
The plugin will only run against files that explicitly define themselves as a
named component, using a /** @define ComponentName */ or /** @define ComponentName; use strict */ comment on the first line of the file.
/** @define MyComponent */
:root {
--MyComponent-property: value;
}
.MyComponent {}
.MyComponent .other {}Strict mode:
/** @define MyComponent; use strict */
:root {
--MyComponent-property: value;
}
.MyComponent {}
.MyComponent-other {}Testing CSS files
Pass your individual CSS files through the plugin. It will throw errors for conformance failures, which you can log when caught by your build tools.
var postcss = require('postcss');
var bemLinter = require('postcss-bem-linter');
files.forEach(function (file) {
var css = fs.readFileSync(file, 'utf-8');
postcss().use(bemLinter).process(css);
});Development
Install the dependencies.
npm installRun the tests.
npm testWatch and automatically re-run the unit tests.
npm start