unnecessary
v2.0.0
Published
Check for files not required throughout the project
Downloads
87
Maintainers
Readme
unnecessary
Keep track of your files. Ligthweight coverage for huge projects. Check for files never required troughout testing. Compares project tree with require cache.
Description
Options:
cwd
: Project working directory, defaults toprocess.cwd()
filePattern
: Regex pattern, Defaults to js and json extensionsexcludeDirs
: Array with directories to exclude, use relative paths, e.g.app/assets
. Default isnode_modules
and.git
. Option is appended to the default listexcludeFiles
: Array with files to exclude, use relative paths, e.g.test/data/arbitrary.json
. Default ispackage.json
. Option is appended to the default list
// Before testing, e.g. in mocha setup
var unnecessary = require('unnecessary')({
filePattern: /\.js$/i
});
When testing has completed run
var unusedScriptsOrJsons = unnecessary.untouched();
The module can also be instantiated with new to get a standalone instance.
var Unnecessary = require('unnecessary');
var unnecessaryCoffee = new Unnecessary({
filePattern: /\.coffee$/i
});
var unnecessaryJs = new Unnecessary({
filePattern: /\.js$/i
});
// Print watched files
console.log(unnecessaryCoffee.files)
console.log(unnecessaryJs.files)
Report after test completion
To make the module report unused files after test completion - listen for process exit.
Example setup-file to be used with mocha.opts
--require
argument:
'use strict';
var Unnecessary = require('unnecessary');
var unnecessary = new Unnecessary({
excludeDirs: ['coverage']
});
process.on('exit', function(code, signal) {
if (!signal && code === 0) {
log();
}
});
function log() {
var untouched = unnecessary.untouched();
if (!untouched.length) return;
console.log('\n\x1b[31mFound %d potentially unused file%s:\x1b[0m', untouched.length, untouched.length > 1 ? 's' : '');
unnecessary.untouched().forEach(function(file) {
console.log('\x1b[33m %s\x1b[0m', file);
});
}
or more fancy es6:
'use strict';
const Unnecessary = require('unnecessary');
const unnecessary = new Unnecessary({
excludeDirs: ['coverage']
});
process.on('exit', (code, signal) => {
if (!signal && code === 0) {
log();
}
});
function log() {
/* eslint no-console:0 */
let untouched = unnecessary.untouched();
if (!untouched.length) return;
console.log(`\n\x1b[31mFound ${untouched.length} potentially unused file${untouched.length > 1 ? 's' : ''}:\x1b[0m`);
unnecessary.untouched().forEach((file) => {
console.log(` \x1b[33m${file}\x1b[0m`);
});
}