You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.6 KiB
Markdown
79 lines
1.6 KiB
Markdown
7 years ago
|
# detective
|
||
|
|
||
|
find all calls to `require()` by walking the AST
|
||
|
|
||
|
[![build status](https://secure.travis-ci.org/substack/node-detective.png)](http://travis-ci.org/substack/node-detective)
|
||
|
|
||
|
# example
|
||
|
|
||
|
## strings
|
||
|
|
||
|
strings_src.js:
|
||
|
|
||
|
``` js
|
||
|
var a = require('a');
|
||
|
var b = require('b');
|
||
|
var c = require('c');
|
||
|
```
|
||
|
|
||
|
strings.js:
|
||
|
|
||
|
``` js
|
||
|
var detective = require('detective');
|
||
|
var fs = require('fs');
|
||
|
|
||
|
var src = fs.readFileSync(__dirname + '/strings_src.js');
|
||
|
var requires = detective(src);
|
||
|
console.dir(requires);
|
||
|
```
|
||
|
|
||
|
output:
|
||
|
|
||
|
```
|
||
|
$ node examples/strings.js
|
||
|
[ 'a', 'b', 'c' ]
|
||
|
```
|
||
|
|
||
|
# methods
|
||
|
|
||
|
``` js
|
||
|
var detective = require('detective');
|
||
|
```
|
||
|
|
||
|
## detective(src, opts)
|
||
|
|
||
|
Give some source body `src`, return an array of all the `require()` calls with
|
||
|
string arguments.
|
||
|
|
||
|
The options parameter `opts` is passed along to `detective.find()`.
|
||
|
|
||
|
## detective.find(src, opts)
|
||
|
|
||
|
Give some source body `src`, return an object with "strings" and "expressions"
|
||
|
arrays for each of the require() calls.
|
||
|
|
||
|
The "expressions" array will contain the stringified expressions.
|
||
|
|
||
|
Optionally you can specify a different function besides `"require"` to analyze
|
||
|
with `opts.word`.
|
||
|
|
||
|
You can also specify `opts.nodes = true` in order to include a "nodes" array
|
||
|
which contains an AST node for each of the require() calls.
|
||
|
|
||
|
You can use `opts.isRequire(node)` to return a boolean signifying whether an
|
||
|
esprima AST `node` is a require call.
|
||
|
|
||
|
You can use `opts.parse` to supply options parsed to the parser ([esprima](http://esprima.org/doc/index.html)).
|
||
|
|
||
|
# install
|
||
|
|
||
|
With [npm](https://npmjs.org) do:
|
||
|
|
||
|
```
|
||
|
npm install detective
|
||
|
```
|
||
|
|
||
|
# license
|
||
|
|
||
|
MIT
|