Nothing Precedes Matter

    require-hook

    0.1.2 • Public • Published

    require-hook - A node.js library that allows you to hook 'require', gather data about calls to 'require' and intercept/modify the results

    NPM

    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

    • 0.1.2: minor changes

    • 0.1.1: License change to MIT

    • 0.1.0: Initial version

    Third-party libraries

    The following third-party libraries are used:

    Install

    npm i require-hook

    DownloadsWeekly Downloads

    103

    Version

    0.1.2

    License

    MIT

    Last publish

    Collaborators

    • ralphv