A simple CLI to run Node.js and report code coverage.
MIT License
A simple CLI to run Node.js and report code coverage.
c8
v7.11.1 or 8.84 MB for nyc
v15.1.0.To install coverage-node
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"
}
}
Supported operating systems:
Supported runtime environments:
^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.allowJs
should be true
.compilerOptions.maxNodeModuleJsDepth
should be reasonably large, e.g. 10
.compilerOptions.module
should be "node16"
or "nodenext"
.Code coverage analysis ignores:
node_modules
directory files, e.g. node_modules/foo/index.mjs
.test
directory files, e.g. test/index.mjs
..test
prefixed before the extension, e.g. foo.test.mjs
.test
(regardless of extension), e.g. test.mjs
.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.");
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
{
"scripts": {
"test": "coverage-node test.mjs"
}
}
A package.json
script that allows missing coverage:
{
"scripts": {
"test": "ALLOW_MISSING_COVERAGE=1 coverage-node test.mjs"
}
}
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
: