gulp-w3cjs

A Gulp wrapper for w3cjs to validate your HTML

Usage no npm install needed!

<script type="module">
  import gulpW3cjs from 'https://cdn.skypack.dev/gulp-w3cjs';
</script>

README

gulp-w3cjs NPM version Build Status Dependency Status

w3cjs wrapper for gulp to validate your HTML

Usage

First, install gulp-w3cjs as a development dependency:

npm install --save-dev gulp-w3cjs

Then, add it to your gulpfile.js:

var w3cjs = require('gulp-w3cjs');

gulp.task('w3cjs', function () {
    return gulp.src('src/*.html')
        .pipe(w3cjs())
        .pipe(w3cjs.reporter());
});

Custom Reporting

The results are also added onto each file object under w3cjs, containing success (Boolean) and messages (Array).

Example usage

var w3cjs = require('gulp-w3cjs');
var through2 = require('through2');

gulp.task('example', function () {
    return gulp.src('src/*.html')
        .pipe(w3cjs())
        .pipe(through2.obj(function(file, enc, cb){
            cb(null, file);
            if (!file.w3cjs.success){
                throw new Error('HTML validation error(s) found');
            }
        }));
});

Example output

HTML Error: index.html Line 5, Column 19: Element title must not be empty.
    <title></title>

.../gulpfile.js:11
                                throw new Error('HTML validation error(s) found');
                                      ^
Error: HTML validation error(s) found

API

w3cjs(options)

options.url

URL to the w3c validator. Use if you want to use a local validator. This is the same thing as w3cjs.setW3cCheckUrl().

options.proxy

Http address of the proxy server if you are running behind a firewall, e.g. http://proxy:8080

options.doctype and options.charset were dropped in 1.0.0. Use 0.3.0 if you need them.

options.showInfo

Default: false

Show info type messages in the output.

options.verifyMessage

Allows you to intercept info, warnings or errors, using options.verifyMessage methed, returning false will skip the log output. Example usage:

return gulp.src('index.html')
    .pipe(w3cjs({
        verifyMessage: function(type, message) {

            // prevent logging error message
            if(message.indexOf('Element “style” not allowed as child of element') === 0) return false;
            
            // allow message to pass through
            return true;
        }
    }))
    .pipe(w3cjs.reporter())

w3cjs.setW3cCheckUrl(url)

Same as options.url. SEt's the URL to the w3c validator.

License

MIT License