UNPKG

1.24 kBMarkdownView Raw
1## 3<sup>rd</sup> party libraries
2
3* [lazy-ass](https://github.com/bahmutov/lazy-ass) and
4[check-more-types](https://github.com/kensho/check-more-types) are used to
5[defend against runtime errors](http://glebbahmutov.com/blog/lazy-and-async-assertions/).
6* [lo-dash](https://github.com/bestiejs/lodash) is used to deal with collections / iterators.
7* [check-types](https://github.com/philbooth/check-types.js) is used to verify arguments through out the code.
8* [optimist](https://github.com/substack/node-optimist) is used to process command line arguments.
9* [request](https://npmjs.org/package/request) is used to fetch NPM registry information.
10* [semver](https://npmjs.org/package/semver) is used to compare module version numbers.
11* [q](https://npmjs.org/package/q) library is used to handle promises. While developing this tool,
12I quickly ran into problems managing the asynchronous nature of fetching information, installing multiple modules,
13testing, etc. At first I used [async](https://npmjs.org/package/async), but it was still too complex.
14Using promises allowed to cut the program's code and the complexity to very manageable level.
15* [cli-color](https://npmjs.org/package/cli-color) prints colored text to the terminal.