For build system plugins that need to fetch relative config files (like .jshintrc).
For build system plugins that need to fetch relative config files (like .jshintrc).
npm install rcloader
This plugin was written to specifically address this issue for a couple of gulp plugins.
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.