Skip to content

Commit 38d72e7

Browse files
author
Morten N.O. Henriksen
committed
Enable persistent cache
1 parent cfee807 commit 38d72e7

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

packages/react-scripts/config/paths.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ module.exports = {
7474
testsSetup: resolveModule(resolveApp, 'src/setupTests'),
7575
proxySetup: resolveApp('src/setupProxy.js'),
7676
appNodeModules: resolveApp('node_modules'),
77+
appWebpackCache: resolveApp('node_modules/.cache'),
7778
swSrc: resolveModule(resolveApp, 'src/service-worker'),
7879
publicUrlOrPath,
7980
};
@@ -97,6 +98,7 @@ module.exports = {
9798
testsSetup: resolveModule(resolveApp, 'src/setupTests'),
9899
proxySetup: resolveApp('src/setupProxy.js'),
99100
appNodeModules: resolveApp('node_modules'),
101+
appWebpackCache: resolveApp('node_modules/.cache'),
100102
swSrc: resolveModule(resolveApp, 'src/service-worker'),
101103
publicUrlOrPath,
102104
// These properties only exist before ejecting:
@@ -133,6 +135,7 @@ if (
133135
testsSetup: resolveModule(resolveOwn, `${templatePath}/src/setupTests`),
134136
proxySetup: resolveOwn(`${templatePath}/src/setupProxy.js`),
135137
appNodeModules: resolveOwn('node_modules'),
138+
appWebpackCache: resolveOwn('node_modules/.cache'),
136139
swSrc: resolveModule(resolveOwn, `${templatePath}/src/service-worker`),
137140
publicUrlOrPath,
138141
// These properties only exist before ejecting:

packages/react-scripts/config/webpack.config.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'
3535
const getCacheIdentifier = require('react-dev-utils/getCacheIdentifier');
3636
// @remove-on-eject-end
3737
const postcssNormalize = require('postcss-normalize');
38-
39-
const appPackageJson = require(paths.appPackageJson);
38+
const createEnvironmentHash = require('./webpack/persistentCache/createEnvironmentHash');
4039

4140
// Source maps are resource heavy and can cause out of memory issue for large source files.
4241
const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';
@@ -232,6 +231,19 @@ module.exports = function (webpackEnv) {
232231
// module chunks which are built will work in web workers as well.
233232
globalObject: 'this',
234233
},
234+
cache: {
235+
type: 'filesystem',
236+
version: createEnvironmentHash(env.raw),
237+
cacheDirectory: paths.appWebpackCache,
238+
store: 'pack',
239+
buildDependencies: {
240+
defaultWebpack: ['webpack/lib/'],
241+
config: [__filename],
242+
tsconfig: [paths.appTsConfig, paths.appJsConfig].filter(f =>
243+
fs.existsSync(f)
244+
),
245+
},
246+
},
235247
infrastructureLogging: {
236248
level: 'none',
237249
},
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
const { createHash } = require('crypto');
3+
4+
module.exports = env => {
5+
const hash = createHash('md4');
6+
hash.update(JSON.stringify(env));
7+
8+
return hash.digest('hex');
9+
};

0 commit comments

Comments
 (0)