Parses your code for require
statements, and checks that:
- all required dependencies are mentioned in
package.json
- all dependencies in
package.json
are still being used
$ npm install -g require-lint
$ require-lint
[require-lint] Missing dependencies: attempt, express
[require-lint] Extraneous dependencies: lodash
Any failed checks will trigger an exit code of 1
, and you can choose to fail your build chain.
Note: require-lint doesn't check dev dependencies, since test code doesn't typically have a single entry point
By default, it looks for a package.json
in the current folder.
$ require-lint
It then parses your source from the entry points declared as main
and bin
:
{
"main": "./lib/index.js",
"bin": {
"foo": "./bin/foo.js",
"bar": "./bin/bar.js"
}
}
You can also specify the following options
--pkg
The path to your package.json
.
$ require-lint --pkg ~/dev/thing/package.json
--src
The path to additional entry points.
These must be relative to the given package.json
.
Globs can be used as paths.
$ require-lint --src lib/server.js --src lib/worker.js
--require
Any file to be required before processing, for example to load extra compilers like Coffee-Script. These must be absolute paths or available modules.
$ require-lint --require coffee-script/register
--ignore-missing
Modules that should not be considered missing, even if they are not declared in package.json
. This is not recommended!
$ require-lint --ignore-missing newrelic
--ignore-extra
Modules that should not be considered extraneous, even if they are not required
. For example you might have a dependency on coffee-script
, but not explicitely require
it.
$ require-lint --ignore-extra coffee-script
If you would like to use --ignore-extra
with multiple dependencies, you can separate them using commas:
$ require-lint --ignore-extra coffee-script,bootstrap,ejs
All options above can also be saved in a .requirelintrc
file at the root of your project. For example:
require=coffee-script/register
ignore-missing=newrelic
This makes it easier to check-in your configuration to source-control, although you could equally save your options in package.json
, for example:
{
"scripts": {
"lint": "require-lint --require=coffee-script/register"
}
}
Note that the .requirelintrc
file can be located at any path supported by the rc package, such as ~/.requirelintrc
or /etc/requirelintrc
.
$ npm install
$ npm test
Note: inspired by dependency-check. This implementation relies on Module._compile
to add support Coffee-Script.