stylelint-vscodedeprecated

stylelint wrapper to easily integrate with Visual Studio Code

Usage no npm install needed!

<script type="module">
  import stylelintVscode from 'https://cdn.skypack.dev/stylelint-vscode';
</script>

README

stylelint-vscode

npm version Build Status Build status Coverage Status

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

Use npm.

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 Code Diagnostic 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 and files option is not supported.
    • Because extensions can derive file contents via TextDocument#getText() and there is no need to read physical files again.
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

License

ISC License © 2018 Shinnosuke Watanabe