Invalidate less-node file cache if modified (#3219)

This commit is contained in:
Matthew Dean
2018-06-24 13:16:42 -07:00
committed by GitHub
parent a75f7d9664
commit 3c081ff807

View File

@@ -108,10 +108,23 @@ FileManager.prototype.loadFile = function(filename, currentDirectory, options, e
}
}
var modified = false;
if (self.contents[fullFilename]) {
fulfill({ contents: self.contents[fullFilename], filename: fullFilename});
try {
var stat = fs.statSync.apply(this, [fullFilename]);
if (stat.mtime.getTime() === self.contents[fullFilename].mtime.getTime()) {
fulfill({ contents: self.contents[fullFilename].data, filename: fullFilename});
}
else {
modified = true;
}
}
catch (e) {
modified = true;
}
}
else {
if (modified || !self.contents[fullFilename]) {
var readFileArgs = [fullFilename];
if (!options.rawBuffer) {
readFileArgs.push('utf-8');
@@ -119,7 +132,8 @@ FileManager.prototype.loadFile = function(filename, currentDirectory, options, e
if (options.syncImport) {
try {
var data = fs.readFileSync.apply(this, readFileArgs);
self.contents[fullFilename] = data;
var stat = fs.statSync.apply(this, [fullFilename]);
self.contents[fullFilename] = { data: data, mtime: stat.mtime };
fulfill({ contents: data, filename: fullFilename});
}
catch (e) {
@@ -133,7 +147,8 @@ FileManager.prototype.loadFile = function(filename, currentDirectory, options, e
filenamesTried.push(isNodeModule ? npmPrefix + fullFilename : fullFilename);
return tryPrefix(j + 1);
}
self.contents[fullFilename] = data;
var stat = fs.statSync.apply(this, [fullFilename]);
self.contents[fullFilename] = { data: data, mtime: stat.mtime };
fulfill({ contents: data, filename: fullFilename});
});
fs.readFile.apply(this, readFileArgs);