Skip to content

Find all calls to require() no matter how deeply nested using a proper walk of the AST

License

Notifications You must be signed in to change notification settings

browserify/detective

Folders and files

NameName
Last commit message
Last commit date

Latest commit

51d5e1a · Jun 23, 2024
Oct 17, 2022
Nov 19, 2014
Feb 13, 2018
Feb 2, 2013
Oct 16, 2022
Nov 19, 2014
Nov 19, 2014
Oct 25, 2018
May 27, 2022
Mar 2, 2013
Jan 28, 2019
Oct 17, 2022
Dec 1, 2017

Repository files navigation

detective

find all calls to require() by walking the AST

build status

example

strings

strings_src.js:

var a = require('a');
var b = require('b');
var c = require('c');

strings.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

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() call

Optionally:

  • 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 with some support for esprima-style options range and loc
  • opts.ecmaVersion - default: 9

install

With npm do:

npm install detective

license

MIT