1.1.0 • Published 8 years ago

nodupdeps v1.1.0

Weekly downloads
49
License
ISC
Repository
github
Last release
8 years ago

nodupdeps (No Duplicate Dependencies)

CLI that ensures that there is only a single version of a dependency installed.

Why?

Configuration

I want to use nconf for my config, but I also want to write tons of small modules that share that configuration. If I'm not super careful about specifying semver compatible versions, and running npm dedupe, I could easily load two versions of nconf that don't share the configuration.

Optimizing frontend assets

If I'm using webpack, I probably want to try to only bundle in one version of React to minimize the payload. Webpack does this for you automatically, but if you have different versions it will bundle in both copies. Use nodupdeps to alert you to possible optimizations.

How?

npm install -g nodupdeps
nodupdeps [packageName ...]

When?

I'd add a post install hook!

package.json

{
  ...
  "scripts": {
    "postinstall": "nodupdeps nconf"
  },
  "devDependencies": {
    "nodupdeps": "*"
  },
  ...
}

Examples

> nodupdeps source-map lodash

Error: Duplicates found.

source-map
   node_modules/babel/node_modules/source-map
   node_modules/babel-core/node_modules/source-map
   node_modules/babel-core/node_modules/source-map-support/node_modules/source-map
   node_modules/css-loader/node_modules/postcss/node_modules/source-map
   node_modules/eslint/node_modules/handlebars/node_modules/source-map
   node_modules/eslint/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map
   node_modules/isparta-loader/node_modules/isparta/node_modules/escodegen/node_modules/source-map
   node_modules/isparta-loader/node_modules/isparta/node_modules/istanbul/node_modules/handlebars/node_modules/source-map
   node_modules/isparta-loader/node_modules/isparta/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map
   node_modules/isparta-loader/node_modules/isparta/node_modules/source-map
   node_modules/karma/node_modules/source-map
   node_modules/karma-coverage/node_modules/istanbul/node_modules/escodegen/node_modules/source-map
   node_modules/karma-coverage/node_modules/istanbul/node_modules/handlebars/node_modules/source-map
   node_modules/karma-coverage/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map
   node_modules/karma-coverage/node_modules/source-map
   node_modules/karma-webpack/node_modules/source-map
   node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/source-map
   node_modules/webpack/node_modules/uglify-js/node_modules/source-map
   node_modules/webpack/node_modules/webpack-core/node_modules/source-map

lodash
   node_modules/babel/node_modules/lodash
   node_modules/babel-core/node_modules/lodash
   node_modules/css-loader/node_modules/cssnano/node_modules/postcss-svgo/node_modules/svgo/node_modules/js-yaml/node_modules/argparse/node_modules/lodash
   node_modules/eslint/node_modules/inquirer/node_modules/lodash
   node_modules/eslint/node_modules/js-yaml/node_modules/argparse/node_modules/lodash
   node_modules/isparta-loader/node_modules/isparta/node_modules/istanbul/node_modules/js-yaml/node_modules/argparse/node_modules/lodash
   node_modules/karma/node_modules/lodash
   node_modules/karma-coverage/node_modules/istanbul/node_modules/js-yaml/node_modules/argparse/node_modules/lodash
   node_modules/karma-webpack/node_modules/lodash