Skip to content
This repository was archived by the owner on Oct 27, 2020. It is now read-only.

Commit 663e18a

Browse files
evilebottnawisokra
authored andcommitted
feat: invalidate cache (#9)
1 parent 5025869 commit 663e18a

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/index.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ const path = require('path');
44
const mkdirp = require('mkdirp');
55
const async = require('async');
66
const loaderUtils = require('loader-utils');
7+
const pkgVersion = require('../package.json').version;
8+
9+
const defaultCacheDirectory = path.resolve('.cache-loader');
10+
const ENV = process.env.NODE_ENV || 'development';
711

812
function loader(...args) {
913
const callback = this.async();
@@ -34,6 +38,7 @@ function loader(...args) {
3438
const writeCacheFile = () => {
3539
fs.writeFile(data.cacheFile, JSON.stringify({
3640
remainingRequest: data.remainingRequest,
41+
cacheIdentifier: data.cacheIdentifier,
3742
dependencies: deps,
3843
contextDependencies: contextDeps,
3944
result: args,
@@ -58,13 +63,19 @@ function loader(...args) {
5863
}
5964

6065
function pitch(remainingRequest, prevRequest, dataInput) {
61-
const options = loaderUtils.getOptions(this) || {};
62-
const cacheDirectory = options.cacheDirectory || path.resolve('.cache-loader');
66+
const loaderOptions = loaderUtils.getOptions(this) || {};
67+
const defaultOptions = {
68+
cacheDirectory: defaultCacheDirectory,
69+
cacheIdentifier: `cache-loader:${pkgVersion} ${ENV}`,
70+
};
71+
const options = Object.assign({}, defaultOptions, loaderOptions);
72+
const { cacheIdentifier, cacheDirectory } = options;
6373
const data = dataInput;
64-
data.remainingRequest = remainingRequest;
6574
const callback = this.async();
66-
const hash = digest(remainingRequest);
75+
const hash = digest(`${cacheIdentifier}\n${remainingRequest}`);
6776
const cacheFile = path.join(cacheDirectory, `${hash}.json`);
77+
data.remainingRequest = remainingRequest;
78+
data.cacheIdentifier = cacheIdentifier;
6879
data.cacheFile = cacheFile;
6980
fs.readFile(cacheFile, 'utf-8', (readFileErr, content) => {
7081
if (readFileErr) {
@@ -79,7 +90,7 @@ function pitch(remainingRequest, prevRequest, dataInput) {
7990
callback();
8091
return;
8192
}
82-
if (cacheData.remainingRequest !== remainingRequest) {
93+
if (cacheData.remainingRequest !== remainingRequest || cacheData.cacheIdentifier !== cacheIdentifier) {
8394
// in case of a hash conflict
8495
callback();
8596
return;

0 commit comments

Comments
 (0)