https://github.com/browserify/detective
Find all calls to require() no matter how deeply nested using a proper walk of the AST
https://github.com/browserify/detective
ast commonjs dependencies javascript modules
Last synced: about 2 months ago
JSON representation
Find all calls to require() no matter how deeply nested using a proper walk of the AST
- Host: GitHub
- URL: https://github.com/browserify/detective
- Owner: browserify
- License: other
- Created: 2011-06-18T01:14:05.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2024-06-23T05:28:23.000Z (11 months ago)
- Last Synced: 2024-10-29T21:22:02.147Z (7 months ago)
- Topics: ast, commonjs, dependencies, javascript, modules
- Language: JavaScript
- Homepage:
- Size: 117 KB
- Stars: 414
- Watchers: 16
- Forks: 60
- Open Issues: 10
-
Metadata Files:
- Readme: readme.markdown
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# detective
find all calls to `require()` by walking the AST
[](http://travis-ci.org/browserify/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()`.
## var found = detective.find(src, opts)
Give some source body `src`, return `found` with:
* `found.strings` - an array of each string found in a `require()`
* `found.expressions` - an array of each stringified expression found in a
`require()` call
* `found.nodes` (when `opts.nodes === true`) - an array of AST nodes for each
argument found in a `require()` callOptionally:
* `opts.word` - specify a different function name instead of `"require"`
* `opts.nodes` - when `true`, populate `found.nodes`
* `opts.isRequire(node)` - a function returning whether an AST `CallExpression`
node is a require call
* `opts.parse` - supply options directly to
[acorn](https://npmjs.org/package/acorn) with some support for esprima-style
options `range` and `loc`
* `opts.ecmaVersion` - default: 9# install
With [npm](https://npmjs.org) do:
```
npm install detective
```# license
MIT