npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

grunt-html-dev-master

v18.4.28

Published

Grunt plugin for html validation, using vnu.jar from the master branch for the actual validation

Readme

grunt-html-dev-master

Linux Build Status Windows Build status Code Climate Dependency Status devDependency Status

Grunt plugin for HTML validation, using the vnu.jar markup checker.

This fork publishes a new grunt-html-dev-master NPM module, which depends on vnu-jar-master instead of the latest release of vnu-jar. The W3C Markup Validation Service uses the development version - vnu-jar@dev too. If you want to get consistent results from on-line and off-line testing, you should use grunt-html-master or grunt-html-dev instead of grunt-html in your project.

Getting Started

Install this grunt plugin next to your project's Gruntfile.js with:

npm install grunt-html-dev-master --save-dev

Then add this line to your project's Gruntfile.js:

grunt.loadNpmTasks('grunt-html-dev-master');

Then specify what files to validate in your config:

grunt.initConfig({
  htmllint: {
    all: ['demos/**/*.html', 'tests/**/*.html']
  }
});

For fast validation, keep that in a single group, as the validator initialization takes a few seconds.

When combined with a watching task (such as grunt-contrib-watch), even faster validation can be achieved by starting the validator in client mode and connecting to an already-running instance of the validator in server mode. This removes the time required by repeated initializations. See the server option below.

Options

ignore

  • Type: Array, String, or RegExp
  • Default: null

Use this to specify the error message(s) to ignore. For example:

all: {
  options: {
    ignore: 'The “clear” attribute on the “br” element is obsolete. Use CSS instead.'
  },
  src: 'html4.html'
}

The ignore option also supports regular expressions. For example, to ignore AngularJS directive attributes:

all: {
  options: {
    ignore: /attribute “ng-[a-z-]+” not allowed/
  },
  src: 'app.html'
}

server

  • Type: Object, or a falsy value
  • Default: false

When server is set to a falsy value, the validator is invoked using java -jar, which can be considered normal operation.

Set server to an object to start the validator in client mode and connect to an already-running instance of the validator in server mode. To start the validator in server mode, use java -cp "path/to/vnu.jar" nu.validator.servlet.Main <port>.

all: {
  options: {
    // connect to a validator instance running in server mode on localhost:8888
    server: {}
  },
  src: 'app.html'
}

The server object also accepts the host and port keys, specifying the location of the server.

all: {
  options: {
    server: {
      // your team's local dev tool machine, for example
      host: '192.168.0.5',
      port: 8877
    }
  },
  src: 'app.html'
}

The following configuration in Gruntfile.js uses grunt-vnuserver to start the validator in server mode and sets up a watch task to run htmllint every time the source file changes. By starting the validator in server mode once using the vnuserver task, validations by htmllint can be performed much faster by simply connecting to this already-running server.

module.exports = function (grunt) {
  grunt.initConfig({
    vnuserver: {
    },
    htmllint: {
      all: {
        options: {
          server: {}
        },
        src: 'app.html'
      }
    },
    watch: {
      all: {
        tasks: ['htmllint'],
        files: 'app.html'
      }
    }
  });

  grunt.loadNpmTasks('grunt-vnuserver');
  grunt.loadNpmTasks('grunt-html-dev-master');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.registerTask('default', ['vnuserver', 'watch']);
};

errorlevels

  • Type: Array
  • Default: 'info','warning','error'

Set errorlevels to control which error types are returned from the validator. Ignores all other returned types.

force

  • Type: Boolean
  • Default: false

Set force to true to report errors but not fail the grunt task.

reporter

  • Type: String
  • Default: null

Allows you to modify the output format. By default, this plugin will use a built-in Grunt reporter. Set the path to your own custom reporter or to one of the provided reporters: checkstyle, junit or json.

reporterOutput

  • Type: String
  • Default: null

Specify a filepath to output the results of a reporter. If reporterOutput is specified then all output will be written to the given filepath rather than printed to stdout.

absoluteFilePathsForReporter

  • Type: Boolean
  • Default: false

Set absoluteFilePathsForReporter to true to use absolute file paths in generated reports.

Travis CI potential pitfalls

Since vnu.jar requires Java 9 environment, you might have trouble setting Travis CI to work with grunt-html. In that case see this patch and the Travis CI doc page.

License

Copyright Jörn Zaefferer.
Licensed under the MIT license.