require-hook - A node.js library that allows you to hook 'require', gather data about calls to 'require' and intercept/modify the results
Features
- Hook 'require' of node.js.
- Can gather data of 'require' calls.
- Can call an event handler on each 'require' call to possibly intercept and change the data.
Getting started
$ npm install require-hook
In your project:
var path = require("path");
var require-hook = require("require-hook");
require-hook.attach(path.resolve());
...
var result = require-hook.getData();
What is collected
require-hook will gather an array of data, each element will have the following properties
{
require: This is the path sent to the require function
callingFile: This is the file that the require was called from
native: boolean indicating whether or not the required library is one of the built in native modules
json: boolean indicating whether or not the required file was json or js
absPath: the absolute path to the required file [this will only be defined if the required is not thirdParty]
absPathResolvedCorrectly: if the absolute path required was resolved correctly and found [this will only be defined if the required is not thirdParty]
testOnly: boolean indicating whether or not the required file was (most probably) for the usage or unit tests only
thirdParty: boolean indicating whether the required file was for a library or a file
localToProject: boolean indicating whether the require was called within the boundaries of the project involved
}
API
### config (object)
This is the configuration object, the same object that gets loaded from config.js file.
Properties
testOnlySubPath
- An array of substrings that identify code loaded from test related sub folders.alternateProjectPaths
- Pass alternate projects path to identify as "localToProject"
### attach(projectPath)
Hook the require functionality.
Arguments
projectPath
- Target project's path
Example
var path = require("path");
require-hook.attach(path.resolve());
### detach()
Remove the hook.
### setEvent(event_handler)
Set an optional event handler which will be called on each "require" call.
Arguments
### getData()
Returns the collected data as an array.
### getData_localToProject()
Returns the collected data as an array, filtered with localToProject flag only.
### getData_thirdParty()
Returns the collected data as an array, filtered with thirdParty (non-native) flag only.
### getData_localThirdParty()
Returns the collected data as an array, filtered with localToProject and thirdParty flags only.
This is useful when used with the config option alternateProjectPaths
### filterData(filter)
Returns the collected data as an array, filtered with the given filter set.
Arguments
filter
- An object with flags to filter
Example
var result = require-hook.filterData({native: false, localToProject: true, thirdParty: true});
var result = require-hook.filterData({native: false, thirdParty: true});
License
require-hook is licensed under the MIT License
Changelog
Third-party libraries
The following third-party libraries are used: