# Node.js API The stylelint module includes a `lint()` function that provides the Node.js API. ```js stylelint.lint(options).then(function (resultObject) { /* .. */ }); ``` ## Options In addition to the [standard options](options.md), the Node API accepts: ### `config` A [configuration object](../configure.md). stylelint does not bother looking for a `.stylelintrc` file if you use this option. ### `configOverrides` A partial stylelint configuration object whose properties override the existing config object, whether stylelint loads the config via the `config` option or a `.stylelintrc` file. ### `code` A string to lint. ### `files` A file glob, or array of [file globs](https://github.com/sindresorhus/globby). Relative globs are considered relative to `globbyOptions.cwd`. Though both `files` and `code` are "optional", you _must_ have one and _cannot_ have both. ### `globbyOptions` The options that are passed with `files`. For example, you can set a specific `cwd` manually. Relative globs in `files` are considered relative to this path. And by default, `cwd` will be set by `process.cwd()`. For more detail usage, see [Globby Guide](https://github.com/sindresorhus/globby#options). ## The returned promise `stylelint.lint()` returns a Promise that resolves with an object containing the following properties: ### `errored` Boolean. If `true`, at least one rule with an "error"-level severity registered a violation. ### `output` A string displaying the formatted violations (using the default formatter or whichever you passed). ### `postcssResults` An array containing all the accumulated [PostCSS LazyResults](https://api.postcss.org/LazyResult.html). ### `results` An array containing all the stylelint result objects (the objects that formatters consume). ### `maxWarningsExceeded` An object containing the maximum number of warnings and the amount found, e.g. `{ maxWarnings: 0, foundWarnings: 12 }`. ## Syntax errors `stylelint.lint()` does not reject the Promise when your CSS contains syntax errors. It resolves with an object (see [The returned promise](#the-returned-promise)) that contains information about the syntax error. ## Usage examples ### Example A As `config` contains no relative paths for `extends` or `plugins`, you do not have to use `configBasedir`: ```js stylelint .lint({ config: { rules: "color-no-invalid-hex" }, files: "all/my/stylesheets/*.css" }) .then(function (data) { // do things with data.output, data.errored, // and data.results }) .catch(function (err) { // do things with err e.g. console.error(err.stack); }); ``` ### Example B If `myConfig` _does_ contain relative paths for `extends` or `plugins`, you _do_ have to use `configBasedir`: ```js stylelint .lint({ config: myConfig, configBasedir: path.join(__dirname, "configs"), files: "all/my/stylesheets/*.css" }) .then(function () { /* .. */ }); ``` ### Example C Using a string instead of a file glob, and the verbose formatter instead of the default JSON: ```js stylelint .lint({ code: "a { color: pink; }", config: myConfig, formatter: "verbose" }) .then(function () { /* .. */ }); ``` ### Example D Using your own custom formatter function and parse `.scss` source files: ```js stylelint .lint({ config: myConfig, files: "all/my/stylesheets/*.scss", formatter: function (stylelintResults) { /* .. */ } }) .then(function () { /* .. */ }); ``` ### Example E Using a custom syntax: ```js stylelint .lint({ config: myConfig, files: "all/my/stylesheets/*.css", customSyntax: { parse: (css, opts) => { /* .. */ }, stringify: (root, builder) => { /* .. */ } } }) .then(function () { /* .. */ }); ``` Note that the customSyntax option also accepts a string. [Refer to the options documentation for details](./options.md).