-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
27 lines (23 loc) · 859 Bytes
/
index.js
File metadata and controls
27 lines (23 loc) · 859 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const debug = require('debug')('invalidate-module');
const Module = require('module');
const DepGraph = require('dependency-graph').DepGraph;
const graph = new DepGraph();
const __require = Module.prototype.require;
Module.prototype.require = function(path) {
const requiredModule = __require.call(this, path);
const requiredModuleFilename = Module._resolveFilename(path, this);
graph.addNode(this.filename);
graph.addNode(requiredModuleFilename);
graph.addDependency(this.filename, requiredModuleFilename);
return requiredModule;
};
function invalidate(absPathToModule) {
if (graph.hasNode(absPathToModule)) {
graph.dependantsOf(absPathToModule).concat([absPathToModule]).forEach(m => {
delete require.cache[m];
graph.removeNode(m);
debug('deleted module from cache %s', m);
});
}
}
module.exports = invalidate;