Validate CSS via W3C's service
This was created to validate CSS inside of the json2css test suite.
Install the module with: npm install css-validator
var validateCss = require('css-validator');
var assert = require('assert');
validateCss({text: 'a { color: blue; }'}, function (err, data) {
assert.strictEqual(data.validity, true);
assert.deepEqual(data.errors, []);
assert.deepEqual(data.warnings, []);
});
Support this project and others by twolfson via donations
css-validator
returns a single function as its module.exports
validateCss(options, cb)
Validate CSS against W3C's Jigsaw validation service
String|Object
- If options
is a String
, it will be treated as options.text
String
- URL to validate against. Default is http://jigsaw.w3.org/css-validator/validator
null|String
- URL of document to validate. CSS and HTML documents are allowed. Supports http and https protocols.null|String
- CSS to validateString
- Medium where the CSS will be used (e.g. all
, print
, screen
)
all
String
- CSS profile to use for validation (e.g. css3svg
, css21
, svg
)
css3svg
String
- Language to use in response (e.g. en
, bg
, de
)
en
Number|String
- Warning level to set. Default is 2
2
no
, no warnings will be returned0
, less warnings will be returned1
or 2
, more warnings will be returnedString|Boolean
- Allow vendor extensions to just show up as warnings
false
, true
false
null|Function
- Error first callback with function (err, data) {}
signature
null|Error
- If there was a connetivity error, this will be itnull|Object
- Container for response from jigsaw
Boolean
- If there were no errors, this will be true
. Otherwise, it is false
.Object[]
- Array of errors
line
, level
, and message
.
Number
- Line where error occurredString
String
String
String
- Content where error occurredString
- Human readable information about the error and why it occurredObject[]
- Array of warnings
Number
- Line where error occurredNumber
- Intensity of the warning. See options.warning
for more infoString
- Human readable information about the warning and why it occurredIf cb
is not provided, a DuplexStream
will be returned to you.
If you have not provided options.uri
or options.text
, you can .write
+ .end
OR .pipe
to the stream CSS to validate.
Additionally, you can use .read
and .pipe
to get the data
returned by cb
.
The stream will emit the following events:
Error
- Error occurring during connection or parsing of responseObject
- Same as data
sent to cb
. Emitted once.Boolean
- Event for data.validity
with data.validity
as its dataObject
- Event for a new data.errors
object with the error as its argumentObject
- Event for a new data.warnings
object with the warning as its argumentcss-validator
offers a command line interface for validation:
$ css-validator --help
Usage: css-validator [options] <filepath ...>
Options:
-h, --help output usage information
-V, --version output the version number
--w3c-url <url> URL to validate against. Default is http://jigsaw.w3.org/css-validator/validator
--delay <ms> Delay between validation requests to avoid service blacklisting, defaults to 100ms
--concurrency <concurrency> Amount of requests to run in parallel, defaults to 1
--usermedium <usermedium> Medium where the CSS will be used (e.g. `all` (service default), `print`, `screen`)
--profile <profile> CSS profile to use for validation (e.g. `css3svg` (service default), `css21`, `svg`)
--lang <lang> Language to use in response (e.g. `en` (service default), `bg`, `de`)
--warning <warning> Warning level to set (e.g. `0`, `1`, `2` (service default), `no`)
--vextwarning <vextwarning> Allow vendor extensions to just show up as warnings. Possible values are: `true`, `false` (service default)
var cssValidate = require('css-validator');
var css = [
"body {",
" background: url(ab'cd');",
" -moz-box-sizing: content-box;",
"}",
].join('\n');
cssValidate(css, function (err, data) {
console.log(data);
/*
{ validity: false,
errors:
[ { line: '2',
errortype: 'parse-error',
context: ' body ',
errorsubtype: '\n exp\n ',
skippedstring: '\n url(ab \'cd\')\n ',
message: '\n \n Value Error : background (nullcolors.html#propdef-background)\n \n url(ab \'cd\') is not a background-color value : \n ',
error: '\n ' } ],
warnings:
[ { line: '3',
level: '0',
message: 'Property -moz-box-sizing is an unknown vendor extension',
warning: '\n ' } ] }
*/
});
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via npm run lint
and test via npm test
.
As of Nov 27 2013, Todd Wolfson has released this repository and its contents to the public domain.
It has been released under the UNLICENSE.