README
gulp-w3c-html-validator
Gulp plugin to validate HTML using the W3C Markup Validation Service
This Gulp plugin is a wrapper for w3c-html-validator ("A package for testing HTML files or URLs against the W3C validator")
1) Setup
Install module into your project:
$ npm install --save-dev gulp-w3c-html-validator
2) Define Task
Create a task in your gulpfile.js:
// Imports
import gulp from 'gulp';
import { htmlValidator } from 'gulp-w3c-html-validator';
// Tasks
const task = {
validateHtml() {
return gulp.src('target/**/*.html')
.pipe(htmlValidator.analyzer())
.pipe(htmlValidator.reporter());
},
};
// Gulp
gulp.task('validate-html', task.validateHtml);
3) Options
analyzer()
Name (key) | Type | Default | Description |
---|---|---|---|
checkUrl |
string | 'https://validator.w3.org/nu/' |
W3C validation API endpoint. |
ignoreLevel |
'info' or 'warning' |
null |
Skip unwanted messages.* |
ignoreMessages |
string or regex | null |
Skip messages containing a string or matching a regular expression.* |
*The ignoreMessages
and ignoreLevel
options only work for 'json'
output.
Option value 'warning'
also skips 'info'
.
Example usage of ignoreMessages
option:
// Tasks
const task = {
validateHtml() {
return gulp.src('target/**/*.html')
.pipe(htmlValidator.analyzer({ ignoreMessages: /^Duplicate ID/ }))
.pipe(htmlValidator.reporter());
},
};
reporter()
Name (key) | Type | Default | Description |
---|---|---|---|
maxMessageLen |
number | null |
Trim validation messages to not exceed a maximum length. |
throwErrors |
boolean | false |
Throw an error for HTTP validation failure. |
4) Custom Reporting
The analyzer()
adds the validation results onto each file object in the w3cHtmlValidator
field,
which contains a validates
(boolean) field and a messages
(array) field.
Example usage
// Import
import { htmlValidator } from 'gulp-w3c-html-validator';
import through2 from 'through2';
// Tasks
const task = {
validateHtml() {
const handleFile = (file, encoding, callback) => {
callback(null, file);
if (!file.w3cHtmlValidator.validates)
throw Error('HTML failed validation');
};
return gulp.src('target/**/*.html')
.pipe(htmlValidator.analyzer())
.pipe(through2.obj(handleFile)); //custom reporter
},
};
// Gulp
gulp.task('validate-html', task.validateHtml);