node package manager


For build system plugins that need to fetch relative config files (like .jshintrc).


Travis CI

For build system plugins that need to fetch relative config files (like .jshintrc).


  • Find the closest config file (like .jshintrc) relative to the file you are linting
  • Lookups are cached to limit IO operations
  • Accepts input directly from plugin consumers to
    • specifiy a file that should always be used
    • specify a default file
    • specify overrides
    • disable file lookup


npm install rcloader


This plugin was written to specifically address this issue for a couple of gulp plugins.

within a gulp plugin

var RcLoader = require('rcloader');
var map = require('map-stream');
module.exports = function MyGulpPlugin(options) {
  var rcLoader = new RcLoader('.configfilename', options);
  return map(function (file, cb) {
    // get the options for this file specifically 
    rcLoader.for(file.path, function (err, fileOpts) {
      // do something cool 
      // send the file along 
      cb(null, file);

If you would rather, just skip the callback and it will run synchronously.

var fileOpts = rcLoader.for(file.path, options);


The second argument to the RcLoader constructor should be the options that plugin consumers define, and it can take a few different forms.

If the user specifies a string, it is used as a path to the only config file that they care about. Calling rcLoader.for(path) will always return a copy of the config file at that path.

If the user specifies an object, the following keys will be stripped from it:

  • lookup, Boolean: Find the closest config file each time .for() is called. default is true, unless options is a path.
  • defaultFile, string: Specify a default configuration file.

If defaultFile is not specified, all values except lookup will override values found in the config file.