coverage-node v8.0.0
coverage-node
A simple CLI to run Node.js and report code coverage.
- ✨ Zero config.
- 🏁 Tiny source, written from scratch to use code coverage features built into Node.js.
- 📦 Lean install size, compared to 1.94 MB for
c8v7.11.1 or 8.84 MB fornycv15.1.0. - 🖱 Displays ignored or uncovered source code ranges as paths, clickable in IDEs such as VS Code.
Installation
To install coverage-node with npm, run:
npm install coverage-node --save-devIn a package.json script, replace the node command with coverage-node:
{
"scripts": {
- "test": "node test.mjs"
+ "test": "coverage-node test.mjs"
}
}Requirements
Supported operating systems:
- Linux
- macOS
Supported runtime environments:
- Node.js versions
^14.17.0 || ^16.0.0 || >= 18.0.0.
Projects must configure TypeScript to use types from the ECMAScript modules that have a // @ts-check comment:
compilerOptions.allowJsshould betrue.compilerOptions.maxNodeModuleJsDepthshould be reasonably large, e.g.10.compilerOptions.moduleshould be"node16"or"nodenext".
Ignored files
Code coverage analysis ignores:
node_modulesdirectory files, e.g.node_modules/foo/index.mjs.testdirectory files, e.g.test/index.mjs.- Files with
.testprefixed 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.");CLI
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.
Examples
npx can be used to quickly check code coverage for a script:
npx coverage-node test.mjs{
"scripts": {
"test": "coverage-node test.mjs"
}
}A package.json script that allows missing coverage:
{
"scripts": {
"test": "ALLOW_MISSING_COVERAGE=1 coverage-node test.mjs"
}
}Exports
The npm package coverage-node features optimal JavaScript module design. It doesn’t have a main index module, so use deep imports from the ECMAScript modules that are exported via the package.json field exports: