root-require
a more convenient require method for certain situations
How it do
This lets you require()
using a relative path from the root directory of the present module.
Keep in mind require()
is synchronous. And this library is not any more efficient-- (it uses fs.*Sync
methods)
Just like when you use require()
, you should be fine as long as you're doing this at the top of your file outside of any function declarations.
Use Cases
- A file needs to move, and you want to easily be able to find/replace the references to it.
e.g. Consider trying to change the path to giggle.js
in an automated way:
hard
var Giggle = require('./wiggle/sniggle/giggle');
var Giggle = require('../../../../../wiggle/sniggle/giggle');
var Giggle = require('../../../../wiggle/sniggle/giggle');
easy
var Giggle = require('root-require')('lib/wiggle/sniggle/giggle');
var Giggle = require('root-require')('lib/wiggle/sniggle/giggle');
var Giggle = require('root-require')('lib/wiggle/sniggle/giggle');
Usage
Just once:
var Sails = require('root-require')('lib/app');
More than once:
var rootRequire = require('root-require');
var Sails = rootRequire('lib/app');
var Router = rootRequire('lib/router');
var MiddlewareLibrary = rootRequire('lib/middleware');
Credit where credit is due
This is mainly a thin wrapper around packpath
(https://github.com/jprichardson/node-packpath)-- this module just exists so we can do it in one line.
License
MIT, c. 2014 Mike McNeil