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

express-html-validator

v0.2.4

Published

Automatic HTML validation middleware for Express applications.

Downloads

1,042

Readme

express-html-validator

Build Status codecov npm

A middleware for the Express framework that automatically validates the HTML on all your Express routes, powered by html-validate. This module was built and is maintained by the Roosevelt web framework team, but it can be used independently of Roosevelt as well.

Usage

First declare express-html-validator as a dependency in your app.

Then require the package into your application and call its constructor, passing along your Express app:

Usage with CommonJS:

const express = require('express')
const expressValidator = require('express-html-validator')
const app = express()
const config = {}

// Generally this would be used in development mode
if (process.env.NODE_ENV === 'development') {
  expressValidator(app, config)
}

// expressValidator should be called before defining routes
app.get('/', (req, res) => {
  // This html response will be validated in real time as it's sent
  res.sendFile(path.join(publicDir, 'index.html'))
})

Usage with ES modules:

import express from 'express';
import expressValidator from 'express-html-validator'
import { fileURLToPath } from 'url'
import { dirname } from 'path'
const router = express.Router();
const app = express()
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

// Generally this would be used in development mode
if (process.env.NODE_ENV === 'development') {
  expressValidator(app, config)
}

// expressValidator should be called before defining routes
router.get('/', (req, res) => {
  // This html response will be validated in real time as it's sent
  res.sendFile(__dirname + '/index.html');
})

You can also run the validator on arbitrary strings outide of the Express context (example in CommonJS):

const config = {}
const expressValidator = require('express-html-validator')(config)

const someHtml = `<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Some HTML that will not validate</title>
</head>
<body>
  <p>hello world</p></p>
</body>
</html>`

const validationResult = expressValidator(someHtml)

Since the example HTML is not valid, if you display the contents of validationResult in a browser, you will see validation errors.

Configuration

Optionally you can pass this module a set of configs:

  • exceptions: A set of params that can be used to prevent validation in certain scenarios:

    • header [String]: A custom header that when set will disable the validator on a per request basis.

      • Default: 'Partial'.
    • modelValue [String]: An entry in your data model passed along with a res.render that when set will disable validation on the rendered HTML.

      • Default: '_disableValidator'
  • validatorConfig [Object]: html-validate configuration that determines what errors the validator looks for.

    • Note: The full list of available validator rules can be found here.

    • Note: This configuration can also be set by a .htmlValidate.json file placed in your app root directory.

    • Default:

      {
        "extends": ["html-validate:standard"]
      }