Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nodejitsu/require-analyzer
Determine the set of requirements for a given node.js file, directory tree, or module
https://github.com/nodejitsu/require-analyzer
Last synced: 23 days ago
JSON representation
Determine the set of requirements for a given node.js file, directory tree, or module
- Host: GitHub
- URL: https://github.com/nodejitsu/require-analyzer
- Owner: nodejitsu
- Created: 2011-04-24T01:46:03.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2018-03-27T11:51:58.000Z (almost 7 years ago)
- Last Synced: 2024-04-26T04:04:57.411Z (10 months ago)
- Language: JavaScript
- Homepage: http://github.com/nodejitsu/require-analyzer
- Size: 158 KB
- Stars: 152
- Watchers: 13
- Forks: 11
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-github-repos - nodejitsu/require-analyzer - Determine the set of requirements for a given node.js file, directory tree, or module (JavaScript)
README
# require-analyzer
Determine dependencies for a given node.js file, directory tree, or module in code or on the command line
# Status
[![Build Status](https://secure.travis-ci.org/nodejitsu/require-analyzer.png)](http://travis-ci.org/nodejitsu/require-analyzer)## Installation
### Installing npm (node package manager)
curl http://npmjs.org/install.sh | sh### Installing require-analyzer
[sudo] npm install require-analyzer
NOTE: If you're using `npm >= 1.0` then you need to add the `-g` parameter to install `require-analyzer` globally.## Usage
There are two distinct ways to use the `require-analyzer` library: from the command line or through code. The command line tool is designed to work with `package.json` files so make sure that you have created one for your project first. Checkout [jitsu][0] for a quick and easy way to create a package.json.For more information read our blog post at [blog.nodejitsu.com][1].
### Command-line usage
Using require-analyzer from the command line is easy. The binary will attempt to read the `package.json` file in the current directory, then analyze the dependencies and cross reference the result.
$ require-analyzer --help
usage: require-analyzer [options] [directory]Analyzes the node.js requirements for the target directory. If no directory
is supplied then the current directory is usedoptions:
--update Update versions for existing dependencies
-h, --help You're staring at itHere's a sample of `require-analyzer` analyzing its own dependencies:
$ require-analyzer
info: require-analyzer starting in /Users/Charlie/Nodejitsu/require-analyzer
warn: No dependencies found
info: Analyzing dependencies...
info: Done analyzing raw dependencies
info: Retrieved packages from npm
info: Additional dependencies found
data: {
data: findit: '>= 0.0.3',
data: npm: '>= 0.3.18'
data: }
info: Updating /Users/Charlie/Nodejitsu/require-analyzer/package.json
info: require-analyzer updated package.json dependencies### Programmatic usage
The easiest way to use `require-analyzer` programmatically is through the `.analyze()` method. This method will use `fs.stat()` on the path supplied and attempt one of three options:1. If it is a directory that has a package.json, analyze `require` statements from `package.main`
2. If it is a directory with no package.json analyze every `.js` or `.coffee` file in the directory tree
3. If it is a file, then analyze `require` statements from that individual file.Lets dive into a quick sample usage:
```javascript
var analyzer = require('require-analyzer');var options = {
target: 'path/to/your/dependency' // e.g /Users/some-user/your-package
reduce: true
};var deps = analyzer.analyze(options, function (err, pkgs) {
//
// Log all packages that were discovered
//
console.dir(pkgs);
});//
// The call the `.analyze()` returns an `EventEmitter` which outputs
// data at various stages of the analysis operation.
//
deps.on('dependencies', function (raw) {
//
// Log the raw list of dependencies (no versions)
//
console.dir(raw);
});deps.on('search', function (pkgs) {
//
// Log the results from the npm search operation with the current
// active version for each dependency
//
console.dir(pkgs);
});deps.on('reduce', function (reduced) {
//
// Logs the dependencies after they have been cross-referenced with
// sibling dependencies. (i.e. if 'foo' requires 'bar', 'bar' will be removed).
//
console.dir(reduced);
});
```### Further analyzing dependencies
Sometimes when dealing with dependencies it is necessary to further analyze the dependencies that are returned. `require-analyzer` has a convenience method for doing just this:```javascript
var analyzer = require('require-analyzer');var current = {
'foo': '>= 0.1.0'
};var updated = {
'foo': '>= 0.2.0',
'bar': '>= 0.1.0'
};var updates = analyzer.updates(current, updated);
//
// This will return an object literal with the differential
// updates between the two sets of dependencies:
//
// {
// added: { 'bar': '>= 0.1.0' },
// updated: { 'foo': '>= 0.2.0' }
// }
//
```## Tests
npm test#### Author: [Charlie Robbins][2]
[0]: http://github.com/nodejitsu/jitsu
[1]: http://blog.nodejitsu.com/analyze-nodejs-dependencies-like-magic
[2]: http://nodejitsu.com