2.2.1 • Published 8 years ago

imported v2.2.1

Weekly downloads
82
License
-
Repository
github
Last release
8 years ago

imported

Node.JS global require

Summary

This module will help clean your module dependencies by eliminating the need to require every single module in your project using relative paths.

With 'imported', you simply initialize it with a project directory name, and imported will scan your project and load every module for you. Then you simply have to request any module in your project by its name without any paths.

Update

With version 2.x, I have removed fuzzy matching to simplify the algorithm. Now, you must ensure your project has no file name collisions. This will make it easier for you to get any dependency in your project by using the file name only.

Installation

npm install imported

Usage

Assuming your directory structure looks as follows:

mainProjectDir
    |
    |
    -> start.js
    subDirectoryA
        |
        -> myfileA.js
        -> myfileB.js
        |
        |
        subDirectoryB
            |
            |
            -> myfileC.js

myfileC.js

module.exports = {
    run: run
};

function run(){
    console.log('Hi');
}

start.js

var req = require('imported').init('subDirectoryA');

var myfileC = req.get('myfileC');
var myfileA = req.get('myfileA');
var myfileB= req.myFileB; // Optional notation.

myfileC.run();

Output: 'Hi'

myFileB.js

var dep = require('imported');
var myFileC = dep.get('myFileC');

function runme() {
    var myFileA = dep.get('myFileA'); // import any module from any other module
    var myFileB = dep.myFileB; // import any module from any other module

    myFileC.run();
}

Output: 'Hi'

API

init required

Initialize module and process directory.

var req = require('imported').init('subDirectoryA');
var req = require('imported').init('subDirectoryA', {exclude: /(\.git|\.svn|node_modules|test)/ }); // Exclude option will not import those directories. Use Regex.
var req = require('imported').init(); // Optional parameter. Defaults to current directory.

Pass in an object instead to manually override dependencies. Used for mocking dependencies during unit testing.

var req = require('imported').init({
    myFileC: {
        run: function() {
            console.log('this is a mock function that overrides dependencies');
        }
    }
});

Optionally, you can also override only specific dependencies using the optional parameter: 'override'

// Will allow all normal dependencies except override the ones specified by the override parameter
var req = require('../imported').init('.', {
    override: {
        myFileC: {
            run: function() {
                console.log('run mock');
            }
        }
    }
});

Default exclusion directories:

/(\.git|\.svn|node_modules)/

get

Primary method used to import a module

var req = require('imported');

var myfileC = req.myfileC;
var myfileA = req.get('myfileA'); // Optional get function instead.

Features

  • Require any module in your entire project using the file's name
  • Will recusively search your project for the module you are requesting
  • Throws an error when 'requiring' a dependency that does not exist
  • Throws an error when a naming collision is detected
  • Collision detection
  • Unit testing coverage on all interfaces for helper functions
  • Directory exclusion

Future

  • Easy dependency override for unit testing mocking
2.2.1

8 years ago

2.2.0

8 years ago

2.1.5

8 years ago

2.1.4

8 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.6

8 years ago

2.0.5

8 years ago

2.0.4

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.10

8 years ago

1.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago