Fast checking of top level NPM and Bower dependencies based on version numbers.
See grunt-deps-ok for integrating this task into grunt pipeline.
Install as a global tool
npm install -g deps-ok
Install as a project's dependency
npm install --save-dev deps-ok
Checks modules until the first module without valid install. Prints first found error and exits with code 1 if one of the top level dependencies is missing or out of date.
// from the package's root folder execute
deps-ok
deps-ok --verbose
// prints declared and installed version numbers
deps-ok --filename path/to/package.json
// checks give package.json (not in this folder)
Checks both dependencies listed in your package.json and bower.json
If deps-ok finds a problem, then run npm install
or bower install
You can use deps-ok from another module
npm install deps-ok --save
var depsOk = require('deps-ok');
var ok = depsOk(process.cwd(), false /* verbose */);
If you prefer using gulp, you can quickly just add a task
gulp.task('deps-ok', function () {
var gutil = require('gulp-util');
var depsOk = require('deps-ok');
var ok = depsOk(process.cwd(), false /* verbose */);
if (!ok) {
gulp.emit('error', new gutil.PluginError('deps-ok', 'Found outdated installs'));
}
});
gulp.task('default', ['deps-ok', ...]);
--allow-duplicate <name>
allows same dependency to be declared in dev and peer dependencies (or other combinations). Useful if you are developing a plugin that requires the main tool (peer) but also uses the main tool for testing (dev).
$ deps-ok --allow-duplicate angular
$ deps-ok --allow-duplicate angular --allow-duplicate jquery
-
--verbose
prints verbose console messages, but usingDEBUG=deps-ok
is a better method -
--skip-version-check
is used to load and check versions but skip actual physical file checks. Useful in end to end testing.
This check will reject packages without "version" property in the package.json
file.
See debug messages by running module with DEBUG=deps-ok
environment variable
Author: Gleb Bahmutov © 2013
License: MIT - do anything with the code, but don't blame me if it does not work.
Support: if you find any problems with this module, email / tweet / open issue on Github