| # Writing processors |
| |
| Processors are functions that hook into stylelint's pipeline, modifying code on its way into stylelint and modifying results on their way out. |
| |
| *Processors can only be used with the CLI and the Node.js API, not with the PostCSS plugin.* |
| |
| Processor modules are functions that accept an options object and return an object with the following the functions, which hook into the processing of each file: |
| |
| - **code**: A function that accepts two arguments, the file's code and the file's path, and returns a string for stylelint to lint. |
| - **result**: A function that accepts two arguments, the file's stylelint result object and the file's path, and either mutates the result object (returning nothing) or returns a new one. |
| |
| ```js |
| // my-processor.js |
| module.exports = function(options) { |
| return { |
| code: function(input, filepath) { |
| // ... |
| return transformedCode; |
| }, |
| result: function(stylelintResult, filepath) { |
| // ... |
| return transformedResult; |
| } |
| }; |
| } |
| ``` |
| |
| Processors can enable stylelint to lint the CSS within non-stylesheet files. |
| |
| *Processor options must be JSON-friendly*, because users will need to include them in `.stylelintrc` files. |
| |
| ## Sharing processors |
| |
| - Use the `stylelint-processor` keyword within your `package.json`. |
| - Once your processor is published, please send us a Pull Request to add your processor to [the list](../user-guide/processors.md). |