🚫 Gulp is no longer maintained. The same functionality of this gulp plugin is available as a regular CLI build task without gulp. See: 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"). Note that it's usually simpler and cleaner to use the underlying library directly from your package.json file than using this plugin.
Install module into your project:
$ npm install --save-dev gulp-w3c-html-validator
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);
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());
},
};
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. |
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.
// 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);