next() Packaged Middleware

    grunt-vnuserver-dev

    2.0.0 • Public • Published

    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.

    Install

    npm i grunt-vnuserver-dev

    DownloadsWeekly Downloads

    11

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    11.5 kB

    Total Files

    6

    Last publish

    Collaborators

    • prantlf