Skip to content

A grunt task to start the development version of v.Nu html validator in server mode for faster validations.

License

Notifications You must be signed in to change notification settings

prantlf/grunt-vnuserver

 
 

Repository files navigation

grunt-vnuserver-dev

Dependency Status devDependency Status

Grunt plugin for starting the vnu.jar markup checker in server mode. Plays well with grunt-html-dev for faster HTML validation by only starting vnu.jar once, as startup can take a few seconds.

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

Getting Started

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

npm install grunt-vnuserver-dev --save-dev

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

grunt.loadNpmTasks('grunt-vnuserver-dev');

Options

port

  • Type: Number
  • Default: 8888

The port on which to start the server.

all: {
  options: {
      port: 8877
  },
}

skippable

  • Type: Boolean
  • Default: false

Whether or not to skip server startup if port is already in use. Task will fail if port is in use and skippable and useAvailablePort are false.

persist

  • Type: Boolean
  • Default: false

Whether or not to keep the vnu server running even after grunt exists. If false, vnu server is killed when grunt exists.

useAvailablePort

  • Type: Boolean
  • Default: false

If true the task will look for the next available port, if the port set by the port option is in use.

Example

Consider the following configuration in Gruntfile.js in which the watch task is set 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: {
                    // This option makes grunt-html-dev connect to the vnu server instance.
                    server: {}
                },
                src: "app.html"
            }
        },
        watch: {
            all: {
                tasks: ['htmllint'],
                files: "app.html"
            }
        },
    });

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

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

Using the First Available Port

If you set useAvailablePort to true, you will need to pass the actual value to the htmllint task, but the value will be known first during the runtime. Use a function for the server option, which was introduced in the grunt-html-dev fork, at first.

module.exports = function (grunt) {
    var vnuPort;

    grunt.initConfig({
        vnuserver: {
            // Name the task to be able to listen to its events.
            options: {
                // Start with the first free ephemeral port.
                port: 49152,
                // Try other ports, up to port + 30, if the first one is not free.
                useAvailablePort: true
            }
        },
        htmllint: {
            options: {
                // Connect to the vnu server on the dynamically chosen  port.
                server: function () {
                    return {
                        port: vnuPort
                    };
                }
            },
            all: {
                src: "app.html"
            }
        },
        watch: {
            all: {
                tasks: ['htmllint'],
                files: "app.html"
            }
        },
    });

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

    // Obtain the port, which the vnu server is listening to.
    grunt.event.on('vnuserver.listening', function (port) {
        vnuPort = port;
        // vnuPort = grunt.config.get('vnuserver.options.port');
    });

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

License

Copyright Bennie Swart. Licensed under the MIT license.

About

A grunt task to start the development version of v.Nu html validator in server mode for faster validations.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%