|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # PostCSS plugin
-
- As with any other [PostCSS plugin](https://github.com/postcss/postcss#plugins), you can use stylelint's PostCSS plugin either with a [PostCSS runner](https://github.com/postcss/postcss#runners) or with the PostCSS JS API directly.
-
- _However, if a dedicated stylelint task runner plugin [is available](../integrations/task-runner.md) (e.g. [gulp-stylelint](https://github.com/olegskl/gulp-stylelint)) we recommend you use that rather than this plugin, as they provide better reporting._
-
- ## Options
-
- The PostCSS plugin uses the [standard options](options.md), _except the `syntax` and `customSyntax` options_. Instead, the syntax must be set within the [PostCSS options](https://github.com/postcss/postcss#options) as there can only be one parser/syntax in a pipeline.
-
- ## Usage examples
-
- We recommend you lint your CSS before applying any transformations. You can do this by either:
-
- - creating a separate lint task that is independent of your build one.
- - using the [`plugins` option](https://github.com/postcss/postcss-import#plugins) of [`postcss-import`](https://github.com/postcss/postcss-import) or [`postcss-easy-import`](https://github.com/TrySound/postcss-easy-import) to lint your files before any transformations.
- - placing stylelint at the beginning of your plugin pipeline.
-
- You'll also need to use a reporter. _The stylelint plugin registers warnings via PostCSS_. Therefore, you'll want to use it with a PostCSS runner that prints warnings or another PostCSS plugin whose purpose is to format and print warnings (e.g. [`postcss-reporter`](https://github.com/postcss/postcss-reporter)).
-
- ### Example A
-
- A separate lint task that uses the plugin via the PostCSS JS API to lint Less using [`postcss-less`](https://github.com/shellscape/postcss-less).
-
- ```js
- const fs = require("fs");
- const less = require("postcss-less");
- const postcss = require("postcss");
-
- // Code to be processed
- const code = fs.readFileSync("input.less", "utf8");
-
- postcss([
- require("stylelint")({
- /* your options */
- }),
- require("postcss-reporter")({ clearReportedMessages: true })
- ])
- .process(code, {
- from: "input.less",
- syntax: less
- })
- .then(() => {})
- .catch((err) => console.error(err.stack));
- ```
-
- The same pattern can be used to lint Less, SCSS or [SugarSS](https://github.com/postcss/sugarss) syntax.
-
- ### Example B
-
- A combined lint and build task where the plugin is used via the PostCSS JS API, but within [`postcss-import`](https://github.com/postcss/postcss-import) (using the its `plugins` option) so that the source files are linted before any transformations.
-
- ```js
- const fs = require("fs");
- const postcss = require("postcss");
- const stylelint = require("stylelint");
-
- // CSS to be processed
- const css = fs.readFileSync("lib/app.css", "utf8");
-
- postcss([
- require("postcss-import")({
- plugins: [
- require("stylelint")({
- /* your options */
- })
- ]
- }),
- require("postcss-preset-env"),
- require("postcss-reporter")({ clearReportedMessages: true })
- ])
- .process(css, {
- from: "lib/app.css",
- to: "app.css"
- })
- .then((result) => {
- fs.writeFileSync("app.css", result.css);
-
- if (result.map) {
- fs.writeFileSync("app.css.map", result.map);
- }
- })
- .catch((err) => console.error(err.stack));
- ```
|