Skip to content

Commit

Permalink
Invalidate less-node file cache if modified (#3219)
Browse files Browse the repository at this point in the history
  • Loading branch information
matthew-dean authored Jun 24, 2018
1 parent a75f7d9 commit 3c081ff
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions lib/less-node/file-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,18 +108,32 @@ 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');
}
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) {
Expand All @@ -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);
Expand Down

0 comments on commit 3c081ff

Please sign in to comment.