README
stylelint-vscode
stylelint wrapper to easily integrate with Visual Studio Code language server
const stylelintVSCode = require('stylelint-vscode');
const code = `
p {
line-height: .8;
color: red;
}`;
(async () => {
await stylelintVSCode({
code,
config: {
rules: {
'number-leading-zero': 'always',
'color-named': ['never', {severity: 'warning'}]
}
}
}); /* => [{
range: {
start: {line: 2, character: 14},
end: {line: 2, character: 14}
},
message: 'Expected a leading zero (number-leading-zero)',
severity: 1,
code: 'number-leading-zero',
source: 'stylelint'
}, {
range: {
start: {line: 3, character: 9},
end: {line: 3, character: 9}
},
message: 'Unexpected named color "red" (color-no-named)',
severity: 2,
code: 'color-no-named',
source: 'stylelint'
}] */
})();
Installation
npm install stylelint-vscode
API
const stylelintVSCode = require('stylelint-vscode');
stylelintVSCode(options)
options: Object
(directly passed to stylelint.lint
)
Return: Promise<Array<Object>>
It works like stylelint.lint
, except for:
- It will be resolved with an
Array
of VS CodeDiagnostic
instances. - It will be rejected (not resolved) when it takes invalid configs.
- In this case, it joins config errors into a single error object by using array-to-error.
- It suppresses
No configuration found
error.- Doing nothing when there is no configuration is a common behavior of editor plugins.
code
option is required andfiles
option is not supported.- Because extensions can derive file contents via
TextDocument#getText()
and there is no need to read physical files again.
- Because extensions can derive file contents via
const stylelintVSCode = require('stylelint-vscode');
(async () => {
await stylelintVSCode({
code: '{foo}'
}); /*=> [{
range: {
start: {line: 0, character: 1},
end: {line: 0, character: 1}
},
message: 'Unknown word (CssSyntaxError)',
severity: 1,
code: 'CssSyntaxError',
source: 'stylelint'
}] */
});
(async () => {
try {
await stylelintVSCode({
code: 'a {}',
config: {
rules: {
indentation: 2,
'function-comma-space-before': 'foo'
}
}
});
} catch (err) {
err.name;
//=> 'SyntaxError'
err.message;
//=> 'Expected option value for rule "indentation"\nInvalid option value "foo" for rule "function-comma-space-before"'
err.reasons;
/* =>
[
'Expected option value for rule "indentation"',
'Invalid option value "foo" for rule "function-comma-space-before"'
]
*/
}
})();
Related project
- vscode-stylelint — A VS Code extension powered by this module
License
ISC License © 2018 Shinnosuke Watanabe