# Why is NPM broken? This is the source code for the `npm install` error analysis tool at http://cryto.net/why-is-npm-broken/. This tool takes `npm install` output, tries to determine what error occurred, and presents it to the user in an easily understable format - where possible, including instructions on how to resolve the issue. ## Caveats * It's not the nicest code. This tool was thrown together in a hurry, and I haven't yet had the time to make it nicer. * It doesn't yet understand *every possible* error. I add detection rules whenever I run across new error cases in the #Node.js channel and elsewhere. If you run into a new case, please [file an issue](https://git.cryto.net/joepie91/why-is-npm-broken/issues/new). * While for "missing library" issues it tries to determine *which* library you're missing, the database of known libraries (`src/known-libraries.js`) is currently very limited. Again, if you run into an unrecognized library, please [file an issue](https://git.cryto.net/joepie91/why-is-npm-broken/issues/new). * The error detection logic in this tool is currently developed in-tree because its output format is still subject to potential changes, but it will eventually be moved into its own module. Hopefully, one day NPM will integrate it into their client directly. ## License [WTFPL](http://www.wtfpl.net/txt/copying/) or [CC0](https://creativecommons.org/publicdomain/zero/1.0/), whichever you prefer. A donation and/or attribution are appreciated, but not required. ## Donate Maintaining open-source projects takes a lot of time, and the more donations I receive, the more time I can dedicate to open-source. If this module is useful to you, consider [making a donation](http://cryto.net/~joepie91/donate.html)! You can donate using Bitcoin, PayPal, Flattr, cash-in-mail, SEPA transfers, and pretty much anything else. Thank you! ## Contributing Pull requests welcome. Please make sure your modifications are in line with the overall code style, and ensure that you're editing the files in `src/`, not those in `lib/`. Build tool of choice is `gulp`; simply run `gulp` while developing, and it will watch for changes. Be aware that by making a pull request, you agree to release your modifications under the licenses stated above.