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 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-w3c-validator

v2.0.2

Published

Wrapper for The Nu Html Checker (v.Nu)

Downloads

1,003

Readme

node-w3c-validator

node npm license Build Status

Wrapper for The Nu Html Checker (v.Nu)

js happiness style


Attention

You need to install the "Java" for working with node-w3c-validator
Visit https://java.com for downloading the "Java" if you not have it


Table of Contents

  1. CLI
  2. Node.js API
  3. Errors and Warnings suppressing
  4. Changelog
  5. Contributing
  6. Code of Conduct

CLI

Install as global package

npm i -g node-w3c-validator

Usage

node-w3c-validator -i ./dist/*.html -f html -o ./reports/result.html -s

You may pass a glob pattern too

node-w3c-validator -i ./dist/**/*.html -f html -o ./reports/result.html -s

Options

-i, --input <path>

Validate input path.

default: process.cwd()

--exclude <path>

Exclude from input path.

default: unset

-a, --asciiquotes

Specifies whether ASCII quotation marks are substituted for Unicode smart quotation marks in messages.

default: unset

-e, --errors-only

Specifies that only error-level messages and non-document-error messages are reported (so that warnings and info messages are not reported).

default: unset, all message reported, including warnings & info messages

-q, --exit-zero-always

Makes the checker exit zero even if errors are reported for any documents

-f, --format <format>

Specifies the output format for reporting the results

default: unset possible values: gnu | xml | json | text | html | lint

lint format is available from 1.4.0 version.
lint format is designed for convenient error output to the terminal.
it uses a eslint-formatter-pretty under the hood

lint format screenshot

--filterfile <filename>

Specifies a filename. Each line of the file contains either a regular expression or starts with "#" to indicate the line is a comment. Any error message or warning message that matches a regular expression in the file is filtered out (dropped/suppressed)

default: unset, checker does no message filtering

--filterpattern <pattern>

Specifies a regular-expression pattern. Any error message or warning message that matches the pattern is filtered out (dropped/suppressed)

default: unset, checker does no message filtering

-s, --skip-non-html

Skip documents that don’t have *.html, *.htm, *.xhtml, or *.xht extensions.

default: unset, all documents found are checked, regardless of extension

-H, --html

Forces any *.xhtml or *.xht documents to be parsed using the HTML parser.

default: unset, XML parser is used for *.xhtml and *.xht documents

--no-langdetect

Disables language detection, so that documents are not checked for missing or mislabeled html[lang] attributes.

default: unset, language detection & html[lang] checking are performed

--no-stream

Forces all documents to be be parsed in buffered mode instead of streaming mode (causes some parse errors to be treated as non-fatal document errors instead of as fatal document errors).

default: unset, non-streamable parse errors cause fatal document errors

-v, --verbose

Specifies "verbose" output. (Currently this just means that the names of files being checked are written to stdout.)

default: unset, output is not verbose

-V, --version

Shows the current version number.

-o, --output <path>

Write reporting result to the path

-b, --buffersize <size>

Increase maxBuffer size to prevent !!! OUTPUT ERROR or Unexpected end of JSON input errors. This is because child_process stdout being truncated when validator check a lot of files.

CLI -b, --buffersize
# increase buffer size (1024 * 500)
node-w3c-validator -i static/**/*.html -b 500
Node.js API exec.buffersize
// increase buffer size (1024 * 500)
nodeW3CValidator(validatePath, {
    format: 'html',
    exec: {
        buffersize: 1024 * 500
    }
}, function (err, output) {
    // ...
});

Node.js API

Install in your project

npm i --save-dev node-w3c-validator

nodeW3CValidator(pathTo, options, done);

Parameters:

Name | Data type | Description --- | --- | --- pathTo | string | The path to the folder or directly to the file, for verification, also it can be url to the Web document options | Object | Options for validating, sеe description below done | Function | Validation callback, sеe description below

options

You can use all available options from CLI / Options. Only change props name to the camelCase style, exeception --no-stream and --no-langdetect they must be declared without no part

example

  • --errors-only - errorsOnly: true
  • --no-langdetect - langdetect: false
  • --format json - format: 'json'

an exception

--buffersize 500

transforms to

exec: {
    buffersize: 1024 * 500
}

done(err, output)

Validation callback.

Parameters:

Name | Data type | Description --- | --- | --- err | Error / null | if no errors - will be null, otherwise - Error object output | string | string with reporting result, if no errors - can be as empty string

nodeW3CValidator.writeFile(filePath, outputData[, done])

Write file

Parameters:

Name | Data type | Argument | Description --- | --- | --- | --- filePath | string | | relative path to saving a file outputData | string / Buffer | | file output content done | Function | optional | if exist - it will asynchronous writes output to the filePath. See fs.writeFile(file, data, callback)

Usage Example

// imports
const nodeW3CValidator = require('node-w3c-validator');

// paths
const validatePath = './dist/*.html';
// or directly to the file - './dist/index.html'
// or a glob pattern - './dist/**/*.html'
const resultOutput = './reports/result.html';

// validate
nodeW3CValidator(validatePath, {
    format: 'html',
    skipNonHtml: true,
    verbose: true
}, function (err, output) {
    if (err === null) {
        return;
    }
    nodeW3CValidator.writeFile(resultOutput, output);
});

Errors and Warnings suppressing

You can ignore some errors or warnings by suppressing them.
Note! This feature can be used only on html, json and lint formats.

You need to specify nodeW3Cvalidator field in your project package.json file.

Here can be two arrays, for errors (suppressErrors) and warnigns(suppressWarnings).
Values must be a string parts or fully value of "unwanted" message.
Under the hood - node-w3c-validator will use String.protorype.includes
method for filtering messages.

For example, you receive warning message:

The “type” attribute for the “style” element is not needed and should be omitted.

Now you can suppress it

{
  "nodeW3Cvalidator": {
    "suppressErrors": [],
    "suppressWarnings": [
      "The “type” attribute for the “style” element is not needed and should be omitted."
    ]
  }
}

Or like this with a part of message:

{
  "nodeW3Cvalidator": {
    "suppressErrors": [],
    "suppressWarnings": [
      "is not needed and should be omitted"
    ]
  }
}

Changelog

See Releases history

Contributing

Please read CONTRIBUTING.md

Contributors 💪

Code of Conduct

Please read CODE_OF_CONDUCT.md