Git Product home page Git Product logo

david's Introduction

David

npm version Build Status Coverage Status Dependency Status devDependency Status Inline docs Donate to help support David development

___

Node.js module that tells you when your package npm dependencies are out of date.

Getting Started

Install Node.js.

Install david:

cd /your/project/directory
npm install david

Use:

var david = require('david');

// Your package.json
var manifest = {
  name: 'xxx',
  dependencies: {
    'aaa': '~0.0.0',
    'bbb': '~0.0.0'
  },
  devDependencies: {
    'yyy': '~0.0.0',
    'zzz': '~0.0.0'
  }
};

david.getDependencies(manifest, function (er, deps) {
  console.log('latest dependencies information for', manifest.name);
  listDependencies(deps);
});

david.getDependencies(manifest, { dev: true }, function (er, deps) {
  console.log('latest devDependencies information for', manifest.name);
  listDependencies(deps);
});

david.getUpdatedDependencies(manifest, function (er, deps) {
  console.log('dependencies with newer versions for', manifest.name);
  listDependencies(deps);
});

david.getUpdatedDependencies(manifest, { dev: true }, function (er, deps) {
  console.log('devDependencies with newer versions for', manifest.name);
  listDependencies(deps);
});

david.getUpdatedDependencies(manifest, { stable: true }, function (er, deps) {
  console.log('dependencies with newer STABLE versions for', manifest.name);
  listDependencies(deps);
});

david.getUpdatedDependencies(manifest, { dev: true, stable: true }, function (er, deps) {
  console.log('devDependencies with newer STABLE versions for', manifest.name);
  listDependencies(deps);
});

function listDependencies(deps) {
  Object.keys(deps).forEach(function(depName) {
    var required = deps[depName].required || '*';
    var stable = deps[depName].stable || 'None';
    var latest = deps[depName].latest;
    console.log('%s Required: %s Stable: %s Latest: %s', depName, required, stable, latest);
  });
}

Both getDependencies and getUpdatedDependencies return an object result, whose keys are package names. The values are objects which contain the following properties:

  • required - The version required according to the manifest
  • stable - The latest stable version available
  • latest - The latest version available (including build and patch versions)

CLI

If you install David globally with npm install -g david, you can run david in your project directory to see which dependencies are out of date.

You can also run david --global to see your outdated global dependencies.

Update to latest

To update all your project dependencies to the latest stable versions, and save to your package.json, run:

david update

To update a particular project dependency to the latest stable version, and save to your package.json, run:

david update package-name

You can also update global dependencies to latest versions:

david update --global

To update all your project dependencies to the latest versions (including unstable versions), pass the --unstable flag:

david update --unstable

Alternate registry

david update --registry http://registry.nodejitsu.com/

Non-npm and SCM (Git) dependencies

If you have dependencies that are not published to npm, david will print a warning message by default. To throw an error and exit, pass the error404 option:

david --error404

If using david programmatically, pass error: {E404: true} in the options object.

If you have dependencies whose versions are SCM URLs, david will print a warning message by default. To throw an error and exit, pass the errorSCM option:

david --errorSCM

If using david programmatically, pass error: {ESCM: true} in the options object.

Specify package.json path

Use -p, --package to specify the path to your package.json.

Ignore dependencies

To tell david to ignore dependencies, add a david.ignore property to your package.json which lists the dependencies david should ignore. If using david programmatically you can also pass this as an option. e.g.

package.json

{
  "david": {
    "ignore": ["async", "underscore"]
  }
}

Release History

  • 2017-01-20   v10.0.0   Update to npm@4
  • 2016-08-26   v9.0.0   CLI add global dependencies up to date message
  • 2016-06-30   v8.0.0   Update dependencies
  • 2015-11-09   v7.0.0   Update to npm@3
  • 2015-10-19   v6.4.0   CLI Add -i, --ignore option to ignore dependencies
  • 2015-10-19   v6.3.0   Ignore dependencies from package.json config
  • 2015-08-08   v6.2.0   CLI Add -p, --package to specify package.json path
  • 2014-12-19   v6.0.0   Warn about unregistered or git dependencies by default
  • 2014-09-22   v5.0.0   Update to [email protected]
  • 2014-09-22   v4.1.0   Add versions option to return all dependency versions
  • 2014-09-21   v4.0.0   Update to [email protected], add rangeVersions option
  • 2014-06-02   v3.3.0   CLI Add --warn404 option to print errors but not abort
  • 2014-03-11   v3.1.0   CLI Add -r, --registry option to use alternate npm registry
  • 2014-03-06   v3.0.0   Errors occurring whilst retrieving dependency status doesn't halt processing of other dependencies. An error object will be returned as first arg to callback, but status info for remaining dependencies will still be available (as second arg). CLI now uses loose semver version parsing. Also update npm dependency so david update uses "^" as per npm/npm#4587
  • 2013-10-27   v2.4.0   Removes semverext.js. The gtr function is now available in semver
  • 2013-10-08   v2.3.0   Support update specific modules from CLI via david update [module]
  • 2013-10-01   v2.2.0   Support for optionalDependencies and peerDependencies
  • 2013-09-16   v2.1.0   Fixed issues with latest/stable version detection
  • 2013-08-25   v2.0.0   Simplification refactor to remove caching and useless events. Code style changes, performance improvements.
  • 2013-08-04   v1.9.0   CLI added --unstable flag to view/update to latest unstable dependency versions
  • 2013-07-30   v1.8.0   CLI added david update to update dependencies to latest stable versions and save to your project package.json
  • 2013-06-27   v1.7.0   Updated to use semver 2 module. Simplified code that determines if a version is greater than a range
  • 2013-03-28   v1.6.0   Use setImmediate instead of process.nextTick. David now requires Node.js 0.10.x
  • 2013-03-27   v1.5.0   CLI added --global flag to find outdated global dependencies
  • 2013-03-15   v1.4.0   Allow set the maximum number of dependencies that can be stored in the cache
  • 2013-03-14   v1.3.0   Added CLI support
  • 2013-03-05   v1.2.0   David can now get dependency information for devDependencies
  • 2013-02-07   v1.1.0   Adds onlyStable param to getUpdatedDependencies to filter by dependencies that are updated and stable
  • 2013-02-06   v1.0.0   Return latest stable version as well as latest version (including patch and build versions). API return values changed. Events changed.

js-standard-style

david's People

Contributors

alanshaw avatar xhmikosr avatar greenkeeperio-bot avatar jgallen23 avatar adrieankhisbe avatar davglass avatar nschonni avatar olizilla avatar shahata avatar kingcody avatar chilts avatar jpaulin avatar mnquintana avatar mylesborins avatar rafeca avatar rrrene avatar thibaudcolas avatar shebson avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.