Skip to content
Switch branches/tags


npm version CI status

A simple CLI to run Node.js and report code coverage.


To install with npm, run:

npm install coverage-node --save-dev

In a package.json script, replace the node command with coverage-node:

   "scripts": {
-    "test": "node test.mjs"
+    "test": "coverage-node test.mjs"


Ignored files

Code coverage analysis ignores:

  • node_modules directory files, e.g. node_modules/foo/index.mjs.
  • test directory files, e.g. test/index.mjs.
  • Files with .test prefixed before the extension, e.g. foo.test.mjs.
  • Files named test (regardless of extension), e.g. test.mjs.

Ignored lines

In source code, a comment (case insensitive) can be used to ignore code coverage ranges that start on the the next line:

// coverage ignore next line
if (false) console.log("Never runs.");


Command coverage-node

Substitutes the normal node command; any node CLI options can be used to run a test script. If the script doesn’t error a code coverage analysis is reported to the console, and if coverage is incomplete and there isn’t a truthy ALLOW_MISSING_COVERAGE environment variable the process exits with code 1.


npx can be used to quickly check code coverage for a script:

npx coverage-node test.mjs

A package.json script:

  "scripts": {
    "test": "coverage-node test.mjs"

A package.json script that allows missing coverage:

  "scripts": {
    "test": "ALLOW_MISSING_COVERAGE=1 coverage-node test.mjs"


These ECMAScript modules are published to npm and exported via the package.json exports field: