grunt-nyc-mocha
grunt task for running tests and coverage, based on nyc and mocha.
content
-
Usage
-
Developers
getting started
This guide assumes, that you are familiar with the use of npm and grunt.
The plugin can be installed by the following command:
npm install grunt-nyc-mocha --save-dev
Once installed, the plugin may be loaded from within your gruntfile.
task nyc_mocha
"nyc_mocha" is a grunt multitask provided by grunt-nyc-mocha
and
can hold multiple targets. Each of the targets you may define will spawn
their very own node process.
Multitask configuration generally splits into the following parts:
- options (tasklevel, inherited by any target)
- target (0 to n)
- any other grunt configuration properties
- options (targetlevel, will be merged into tasklevel options)
Any target can extend, repeat or overwrite options previously defined by a task. For doing so, each target can specify its own "options" property. Targetlevel options will be merged into tasklevel options, overwriting them.
grunt-nyc-mocha
raw usage of // extract from gruntfile.js
module.exports = function( grunt ) {
grunt.initConfig({
// among many others ...
nyc_mocha:{
options: { /*tasklevel options go here*/ }
target: {
src: "./src/test/**/*.spec.js", // test suites to run...
options: { /* targetlevel options go here */ }
}
}
});
grunt.loadNpmTasks( "nyc_mocha" );
grunt.registerTask( "default", [ "nyc_mocha:target" ]);
}
grunt-nyc-mocha
with load-grunt-config
and load-grunt-tasks
using Install the following packages:
npm install load-grunt-config --save-dev
npm install load-grunt-tasks --save-dev
Now you can split gruntfile.js in multiple configuration files:
// extract from (a much cleaner) gruntfile.js
const configPath = ...? // this is where your config files reside
const data = { /* some properties, that can be passed on */ };
module.exports = function( grunt ) {
require( "load-grunt-config" )( grunt, { configPath, data });
require( "load-grunt-tasks" )( grunt );
grunt.registerTask( "default", [ "nyc_mocha:target" ]);
}
// extract from nyc_mocha.js (has to be named tasklike!)
module.exports = function ( grunt, options ) {
return {
target: {
src: "./src/test/**/*.spec.js", // run those test files
options: {
nyc: {
coverage: { // report nyc coverage results
dir: "dist/coverage", // ... to folder
reporter: [ "html", "text-summary" ] // ... using reporters
},
excludes: [ "**/*.spec.js" ], // exclude test files from instrumentation!
requires: [ "grunt-nyc-mocha/scripts/sourcemapsupport" ]
},
mocha: {
color: true // force colored output
}
}
}
}
};