Skip to content

Commit 3c081ff

Browse files
authored
Invalidate less-node file cache if modified (#3219)
1 parent a75f7d9 commit 3c081ff

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

lib/less-node/file-manager.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,18 +108,32 @@ FileManager.prototype.loadFile = function(filename, currentDirectory, options, e
108108
}
109109
}
110110

111+
var modified = false;
112+
111113
if (self.contents[fullFilename]) {
112-
fulfill({ contents: self.contents[fullFilename], filename: fullFilename});
114+
try {
115+
var stat = fs.statSync.apply(this, [fullFilename]);
116+
if (stat.mtime.getTime() === self.contents[fullFilename].mtime.getTime()) {
117+
fulfill({ contents: self.contents[fullFilename].data, filename: fullFilename});
118+
}
119+
else {
120+
modified = true;
121+
}
122+
}
123+
catch (e) {
124+
modified = true;
125+
}
113126
}
114-
else {
127+
if (modified || !self.contents[fullFilename]) {
115128
var readFileArgs = [fullFilename];
116129
if (!options.rawBuffer) {
117130
readFileArgs.push('utf-8');
118131
}
119132
if (options.syncImport) {
120133
try {
121134
var data = fs.readFileSync.apply(this, readFileArgs);
122-
self.contents[fullFilename] = data;
135+
var stat = fs.statSync.apply(this, [fullFilename]);
136+
self.contents[fullFilename] = { data: data, mtime: stat.mtime };
123137
fulfill({ contents: data, filename: fullFilename});
124138
}
125139
catch (e) {
@@ -133,7 +147,8 @@ FileManager.prototype.loadFile = function(filename, currentDirectory, options, e
133147
filenamesTried.push(isNodeModule ? npmPrefix + fullFilename : fullFilename);
134148
return tryPrefix(j + 1);
135149
}
136-
self.contents[fullFilename] = data;
150+
var stat = fs.statSync.apply(this, [fullFilename]);
151+
self.contents[fullFilename] = { data: data, mtime: stat.mtime };
137152
fulfill({ contents: data, filename: fullFilename});
138153
});
139154
fs.readFile.apply(this, readFileArgs);

0 commit comments

Comments
 (0)