1.5.7 • Published 7 years ago

register-autoload v1.5.7

Weekly downloads
1
License
MIT
Repository
-
Last release
7 years ago

register-autoload

require local modules with absolute path for all folder and folder/lib

###install npm install register-autoload --save

###use

with the given project structure:

    .
    ├── app
    │   └── test.js
    ├── lib
    │   └── serialGenerator
    │       └── index.js
    ├── index.js
    ├── package.json
    └── node_modules
        └── register-autoload
            ├── package.json
            ├── folders-of-project.js
            └── index.js

you can require this from the app directory:

    // only call this once
    // All Folders of Project
    require('register-autoload')();

    // Only folders in project 
    require('register-autoload')(['lib','app']);
    // Outer sintax Only folders in project 
    require('register-autoload')('lib, app');
    //   $project_folder/lib 
    //   $project_folder/app 

    // Only folders in project 
    require('register-autoload')(['lib','app'], ['libs']);
    // Outer sintax Only folders in project 
    require('register-autoload')('lib, app', 'libs');
    //   $project_folder/lib/
    //   $project_folder/app/
    //   $project_folder/../libs/
    //   $project_folder/../libs/
    //   $project_folder/../../libs/
    //    ...
    //   /libs/

    // Only folders in project 
    require('register-autoload')(['lib','app'], ['libs'], true);
    // Outer sintax Only folders in project 
    require('register-autoload')('lib, app', 'libs', 'true');
    //   $project_folder/lib/ 
    //   $project_folder/app/ 
    //   $project_folder/../libs/ 
    //   $project_folder/../../libs/ 
    //    ...
    //   /libs/ 
    //   $project_folder/../
    //   $project_folder/../../
    //    ...
    //   /
    
    // require from node_modules as usual
    let obj = require('test');

    // require from lib with absolute paths
    let obj = require('serialGenerator');
    obj.generate(10000);

problem

require not new locals modules in node can be annoying with relative paths. e.g.

    var modulo = require('../../../lib/modulo');

solution

treat specific application folders like the node_modules folder, so that we can require stuff without ugly relative paths.

sample

$project-folder/index.js

let p = require('register-autoload')('lib, app', 'libs', 'true');
console.log(p);
require('test')();

$project-folder/app/test.js

module.exports = exports = () => {
    let execute = () => {
        var serialGenerator = require('serialGenerator');
        console.log(__dirname, "\n", serialGenerator.generate());
    }
    return execute();
}

$project-folder/lib/serialGenerate/index.js

module.exports.generate = (max = 10000) => {
    return Math.floor(Math.random() * max);
}

OUTPUT: Paths Generated

####Running node "index.js"

{ PATHS: [ 
     'c:\\Users\\root\\Projetos\\NodeJS_Sistema_de_Modulos\\lib',
     'c:\\Users\\root\\Projetos\\NodeJS_Sistema_de_Modulos\\app',

     'c:\\Users\\root\\Projetos\\libs',
     'c:\\Users\\root\\libs',
     'c:\\Users\\libs',
     'c:\\libs',

     'c:\\Users\\root\\Projetos',
     'c:\\Users\\root',
     'c:\\Users',
     'c:\\' 
]}

// c:\Users\root\Projetos\NodeJS_Sistema_de_Modulos\app 
// 7249

Done exited with code=0 in 1.952 seconds

test

tested so far with node 0.8, 0.10, 0.11, 8

inspiration

https://gist.github.com/branneman/8048520

credits

  • @branneman for the great article on this topic
  • @joelabair for the cool hack
1.5.7

7 years ago

1.4.7

7 years ago

1.3.7

7 years ago

1.2.7

7 years ago

1.1.7

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.0.2

7 years ago

1.0.0

7 years ago