require-clean
Version:
Cleanly `require` a module from disk, having flushed the module's cache, including all of its submodules. Used like normal `require`
69 lines (64 loc) • 2.06 kB
JavaScript
/**
* require-clean http://github.com/anodynos/require-clean/
*
* Cleanly `require` a module from disk, having flushed the module's cache, including all of its submodules. Used like normal `require`
* Version 0.1.3 - Compiled on 2015-10-05 01:08:44
* Repository git://github.com/anodynos/require-clean
* Copyright(c) 2015 Agelos Pikoulas <agelos.pikoulas@gmail.com>
* License MIT
*/
// Generated by uRequire v0.7.0-beta.22 target: 'lib' template: 'nodejs'
var _ = require('lodash');
var VERSION = '0.1.3'; // injected by urequire-rc-inject-version
var callerPath, deleteMod, path, requireClean, resolveFrom, searchCache, _;
_ = require("lodash");
path = require("path");
resolveFrom = require("resolve-from");
callerPath = require("caller-path");
deleteMod = function (mod) {
return delete require.cache[mod.id];
};
searchCache = function (name, calledFrom, deep, callback) {
var mod, run;
mod = resolveFrom(path.dirname(calledFrom), name);
if (mod && (mod = require.cache[mod]) !== void 0) {
return (run = function (mod) {
if (deep) {
mod.children.forEach(function (child) {
return run(child);
});
}
return callback(mod);
})(mod);
}
};
requireClean = function (name, deep) {
var cp;
if (deep == null) {
deep = true;
}
if (!_.isString(name)) {
throw new TypeError("requireClean expects a moduleId String");
}
cp = callerPath();
searchCache(name, cp, deep, deleteMod);
return require(resolveFrom(path.dirname(cp), name));
};
requireClean.clean = function (name, deep) {
if (deep == null) {
deep = true;
}
if (_.isUndefined(name)) {
return _.each(require.cache, function (v, key) {
return delete require.cache[key];
});
} else {
if (!_.isString(name)) {
throw new TypeError("requireClean.clean Expects a moduleId String");
}
return searchCache(name, callerPath(), deep, deleteMod);
}
};
requireClean.VERSION = typeof VERSION !== "undefined" && VERSION !== null ? VERSION : "{NO_VERSION}";
module.exports = requireClean;
;