Node.js API
The Stylelint module includes a lint()
function that provides the Node.js API.
stylelint.lint(options).then(function (resultObject) { /* .. */});
#
OptionsIn addition to the standard options, the Node API accepts:
config
#
Stylelint does not bother looking for a .stylelintrc
file if you use this option.
code
#
A string to lint.
files
#
A file glob, or array of file globs.
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.
#
The returned promisestylelint.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 problem.
output
#
A string displaying the formatted problems (using the default formatter or whichever you passed).
postcssResults
#
An array containing all the accumulated PostCSS LazyResults.
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 errorsstylelint.lint()
does not reject the Promise when your CSS contains syntax errors.
It resolves with an object (see The returned promise) that contains information about the syntax error.
#
Usage examples#
Example AAs config
contains no relative paths for extends
or plugins
, you do not have to use configBasedir
:
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 BIf myConfig
does contain relative paths for extends
or plugins
, you do have to use configBasedir
:
stylelint .lint({ config: myConfig, configBasedir: path.join(__dirname, "configs"), files: "all/my/stylesheets/*.css" }) .then(function () { /* .. */ });
#
Example CUsing a string instead of a file glob, and the verbose formatter instead of the default JSON:
stylelint .lint({ code: "a { color: pink; }", config: myConfig, formatter: "verbose" }) .then(function () { /* .. */ });
#
Example DUsing your own custom formatter function and parse .scss
source files:
stylelint .lint({ config: myConfig, files: "all/my/stylesheets/*.scss", formatter: function (stylelintResults) { /* .. */ } }) .then(function () { /* .. */ });
#
Example EUsing a custom syntax:
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.