Skip to content

Commit a6a6fb2

Browse files
authoredOct 7, 2021
Fix cache invalidation when shouldOptimize changes (#7030)
1 parent 7d4d53a commit a6a6fb2

File tree

9 files changed

+50
-41
lines changed

9 files changed

+50
-41
lines changed
 

‎packages/core/core/src/Environment.js

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ function getEnvironmentHash(env: Environment): string {
131131
env.outputFormat,
132132
env.sourceType,
133133
env.isLibrary,
134+
env.shouldOptimize,
134135
env.shouldScopeHoist,
135136
env.sourceMap,
136137
]),

‎packages/core/core/src/PackagerRunner.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,8 @@ export default class PackagerRunner {
563563
invalidationHash +
564564
bundle.target.publicUrl +
565565
bundleGraph.getHash(bundle) +
566-
JSON.stringify(configResults),
566+
JSON.stringify(configResults) +
567+
this.options.mode,
567568
);
568569
}
569570

‎packages/core/core/src/RequestTracker.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -1016,7 +1016,7 @@ export default class RequestTracker {
10161016
}
10171017

10181018
async writeToCache() {
1019-
let cacheKey = `${PARCEL_VERSION}:${JSON.stringify(this.options.entries)}`;
1019+
let cacheKey = getCacheKey(this.options);
10201020
let requestGraphKey = hashString(`${cacheKey}:requestGraph`);
10211021
let snapshotKey = hashString(`${cacheKey}:snapshot`);
10221022

@@ -1072,12 +1072,16 @@ export function getWatcherOptions(options: ParcelOptions): WatcherOptions {
10721072
return {ignore};
10731073
}
10741074

1075+
function getCacheKey(options) {
1076+
return `${PARCEL_VERSION}:${JSON.stringify(options.entries)}:${options.mode}`;
1077+
}
1078+
10751079
async function loadRequestGraph(options): Async<RequestGraph> {
10761080
if (options.shouldDisableCache) {
10771081
return new RequestGraph();
10781082
}
10791083

1080-
let cacheKey = `${PARCEL_VERSION}:${JSON.stringify(options.entries)}`;
1084+
let cacheKey = getCacheKey(options);
10811085
let requestGraphKey = hashString(`${cacheKey}:requestGraph`);
10821086
let requestGraph = await options.cache.get<RequestGraph>(requestGraphKey);
10831087

‎packages/core/core/src/requests/AssetGraphRequest.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ export class AssetGraphBuilder {
132132
this.requestedAssetIds = requestedAssetIds ?? new Set();
133133
this.shouldBuildLazily = shouldBuildLazily ?? false;
134134
this.cacheKey = hashString(
135-
`${PARCEL_VERSION}${name}${JSON.stringify(entries) ?? ''}`,
135+
`${PARCEL_VERSION}${name}${JSON.stringify(entries) ?? ''}${options.mode}`,
136136
);
137137

138138
this.queue = new PromiseQueue();

‎packages/core/core/src/requests/BundleGraphRequest.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,8 @@ class BundlerRunner {
345345
assetGraph.getHash() +
346346
configs +
347347
devDepRequests +
348-
invalidations,
348+
invalidations +
349+
this.options.mode,
349350
);
350351
}
351352

‎packages/core/core/test/Environment.test.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {createEnvironment} from '../src/Environment';
66
describe('Environment', () => {
77
it('assigns a default environment with nothing passed', () => {
88
assert.deepEqual(createEnvironment(), {
9-
id: '28ff5688dfa7d45e',
9+
id: 'c242f987e3544367',
1010
context: 'browser',
1111
engines: {
1212
browsers: ['> 0.25%'],
@@ -24,7 +24,7 @@ describe('Environment', () => {
2424

2525
it('assigns a node context if a node engine is given', () => {
2626
assert.deepEqual(createEnvironment({engines: {node: '>= 10.0.0'}}), {
27-
id: '3bae9fa4de65ce29',
27+
id: '69e0ab7220ee8f7a',
2828
context: 'node',
2929
engines: {
3030
node: '>= 10.0.0',
@@ -44,7 +44,7 @@ describe('Environment', () => {
4444
assert.deepEqual(
4545
createEnvironment({engines: {browsers: ['last 1 version']}}),
4646
{
47-
id: '0006b4816a385465',
47+
id: '4b5c9005af8c5b19',
4848
context: 'browser',
4949
engines: {
5050
browsers: ['last 1 version'],
@@ -63,7 +63,7 @@ describe('Environment', () => {
6363

6464
it('assigns default engines for node', () => {
6565
assert.deepEqual(createEnvironment({context: 'node'}), {
66-
id: '5171f29d65a099c4',
66+
id: 'f7c9644283a8698f',
6767
context: 'node',
6868
engines: {
6969
node: '>= 8.0.0',
@@ -81,7 +81,7 @@ describe('Environment', () => {
8181

8282
it('assigns default engines for browsers', () => {
8383
assert.deepEqual(createEnvironment({context: 'browser'}), {
84-
id: '28ff5688dfa7d45e',
84+
id: 'c242f987e3544367',
8585
context: 'browser',
8686
engines: {
8787
browsers: ['> 0.25%'],

‎packages/core/core/test/TargetRequest.test.js

+25-25
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ describe('TargetResolver', () => {
120120
publicUrl: '/',
121121
distDir: normalizeSeparators(path.resolve('customA')),
122122
env: {
123-
id: '7185aca026a1ba43',
123+
id: '1d40417b63734b32',
124124
context: 'browser',
125125
includeNodeModules: true,
126126
engines: {
@@ -141,7 +141,7 @@ describe('TargetResolver', () => {
141141
distEntry: 'b.js',
142142
distDir: normalizeSeparators(path.resolve('customB')),
143143
env: {
144-
id: '923e2836f26d91cc',
144+
id: '928f0d1c941b2e57',
145145
context: 'node',
146146
includeNodeModules: false,
147147
engines: {
@@ -172,7 +172,7 @@ describe('TargetResolver', () => {
172172
distEntry: 'index.js',
173173
publicUrl: '/',
174174
env: {
175-
id: '5b90122270d806a3',
175+
id: 'b552bd32da37fa8b',
176176
context: 'node',
177177
engines: {
178178
node: '>= 8.0.0',
@@ -206,7 +206,7 @@ describe('TargetResolver', () => {
206206
distEntry: 'index.js',
207207
publicUrl: '/',
208208
env: {
209-
id: 'd569d73dba5024af',
209+
id: '8804e4eb97e2703e',
210210
context: 'browser',
211211
engines: {
212212
browsers: ['last 1 version'],
@@ -242,7 +242,7 @@ describe('TargetResolver', () => {
242242
distEntry: 'index.js',
243243
publicUrl: '/assets',
244244
env: {
245-
id: 'f68e756a9f45b317',
245+
id: 'a7ed3e73c53f1923',
246246
context: 'browser',
247247
engines: {
248248
browsers: ['last 1 version'],
@@ -288,7 +288,7 @@ describe('TargetResolver', () => {
288288
distEntry: 'index.js',
289289
publicUrl: '/',
290290
env: {
291-
id: '5171f29d65a099c4',
291+
id: 'f7c9644283a8698f',
292292
context: 'node',
293293
engines: {
294294
node: '>= 8.0.0',
@@ -331,7 +331,7 @@ describe('TargetResolver', () => {
331331
distEntry: 'index.js',
332332
publicUrl: '/',
333333
env: {
334-
id: '5b90122270d806a3',
334+
id: 'b552bd32da37fa8b',
335335
context: 'node',
336336
engines: {
337337
node: '>= 8.0.0',
@@ -365,7 +365,7 @@ describe('TargetResolver', () => {
365365
distEntry: 'index.js',
366366
publicUrl: '/',
367367
env: {
368-
id: 'a06e3cc9e0541b70',
368+
id: '1f28e9ceaf633d83',
369369
context: 'browser',
370370
engines: {
371371
browsers: ['last 1 version'],
@@ -399,7 +399,7 @@ describe('TargetResolver', () => {
399399
distEntry: 'index.js',
400400
publicUrl: '/',
401401
env: {
402-
id: 'd9b90540ac44a9db',
402+
id: '767bf6e6b675c4f3',
403403
context: 'browser',
404404
engines: {
405405
browsers: ['ie11'],
@@ -450,7 +450,7 @@ describe('TargetResolver', () => {
450450
distEntry: 'index.js',
451451
publicUrl: '/',
452452
env: {
453-
id: '5b90122270d806a3',
453+
id: 'b552bd32da37fa8b',
454454
context: 'node',
455455
engines: {
456456
node: '>= 8.0.0',
@@ -484,7 +484,7 @@ describe('TargetResolver', () => {
484484
distEntry: 'index.js',
485485
publicUrl: '/',
486486
env: {
487-
id: 'a06e3cc9e0541b70',
487+
id: 'ed7c0e65adee71c9',
488488
context: 'browser',
489489
engines: {
490490
browsers: ['last 1 version'],
@@ -518,7 +518,7 @@ describe('TargetResolver', () => {
518518
distEntry: 'index.js',
519519
publicUrl: '/',
520520
env: {
521-
id: 'd9b90540ac44a9db',
521+
id: 'f7692543e59e4c0a',
522522
context: 'browser',
523523
engines: {
524524
browsers: ['ie11'],
@@ -561,7 +561,7 @@ describe('TargetResolver', () => {
561561
distEntry: undefined,
562562
publicUrl: 'www',
563563
env: {
564-
id: '0d13493649c1b9ee',
564+
id: 'ddb6ac7c9a3a9178',
565565
context: 'browser',
566566
engines: {
567567
browsers: '> 0.25%',
@@ -604,7 +604,7 @@ describe('TargetResolver', () => {
604604
distDir: normalizeSeparators(path.resolve('customB')),
605605
publicUrl: '/',
606606
env: {
607-
id: '7185aca026a1ba43',
607+
id: '1d40417b63734b32',
608608
context: 'browser',
609609
engines: {
610610
browsers: ['> 0.25%'],
@@ -646,7 +646,7 @@ describe('TargetResolver', () => {
646646
distDir: normalizeSeparators(path.resolve('customA')),
647647
publicUrl: '/',
648648
env: {
649-
id: '7185aca026a1ba43',
649+
id: '1d40417b63734b32',
650650
context: 'browser',
651651
engines: {
652652
browsers: ['> 0.25%'],
@@ -675,7 +675,7 @@ describe('TargetResolver', () => {
675675
distEntry: 'index.js',
676676
publicUrl: '/',
677677
env: {
678-
id: 'b58d7c211621cd65',
678+
id: 'bebcf0293c911f03',
679679
context: 'node',
680680
engines: {},
681681
includeNodeModules: false,
@@ -1046,7 +1046,7 @@ describe('TargetResolver', () => {
10461046
distEntry: 'index.mjs',
10471047
publicUrl: '/',
10481048
env: {
1049-
id: '82a58acaebe4fd7c',
1049+
id: 'fa77701547623794',
10501050
context: 'browser',
10511051
engines: {},
10521052
includeNodeModules: true,
@@ -1084,7 +1084,7 @@ describe('TargetResolver', () => {
10841084
distEntry: 'index.js',
10851085
publicUrl: '/',
10861086
env: {
1087-
id: '82a58acaebe4fd7c',
1087+
id: 'fa77701547623794',
10881088
context: 'browser',
10891089
engines: {},
10901090
includeNodeModules: true,
@@ -1126,7 +1126,7 @@ describe('TargetResolver', () => {
11261126
distEntry: 'index.js',
11271127
publicUrl: '/',
11281128
env: {
1129-
id: '5b90122270d806a3',
1129+
id: 'b552bd32da37fa8b',
11301130
context: 'node',
11311131
engines: {
11321132
node: '>= 8.0.0',
@@ -1160,7 +1160,7 @@ describe('TargetResolver', () => {
11601160
distEntry: 'index.js',
11611161
publicUrl: '/assets',
11621162
env: {
1163-
id: 'f68e756a9f45b317',
1163+
id: 'a7ed3e73c53f1923',
11641164
context: 'browser',
11651165
engines: {
11661166
browsers: ['last 1 version'],
@@ -1208,7 +1208,7 @@ describe('TargetResolver', () => {
12081208
distDir: '.parcel-cache/dist',
12091209
publicUrl: '/',
12101210
env: {
1211-
id: '69f74e7f31319ffd',
1211+
id: '4a236f9275d0a351',
12121212
context: 'browser',
12131213
engines: {},
12141214
includeNodeModules: true,
@@ -1238,7 +1238,7 @@ describe('TargetResolver', () => {
12381238
),
12391239
publicUrl: '/',
12401240
env: {
1241-
id: '04e06037831229c5',
1241+
id: 'a9c07d094d038c73',
12421242
context: 'browser',
12431243
engines: {
12441244
browsers: ['Chrome 80'],
@@ -1271,7 +1271,7 @@ describe('TargetResolver', () => {
12711271
distEntry: undefined,
12721272
publicUrl: '/',
12731273
env: {
1274-
id: '04e06037831229c5',
1274+
id: 'a9c07d094d038c73',
12751275
context: 'browser',
12761276
engines: {
12771277
browsers: ['Chrome 80'],
@@ -1309,7 +1309,7 @@ describe('TargetResolver', () => {
13091309
distEntry: undefined,
13101310
publicUrl: '/',
13111311
env: {
1312-
id: 'a06e3cc9e0541b70',
1312+
id: '1f28e9ceaf633d83',
13131313
context: 'browser',
13141314
engines: {
13151315
browsers: ['last 1 version'],
@@ -1337,7 +1337,7 @@ describe('TargetResolver', () => {
13371337
distEntry: undefined,
13381338
publicUrl: '/',
13391339
env: {
1340-
id: '83bb584641584b67',
1340+
id: '824e113c03cab3c8',
13411341
context: 'browser',
13421342
engines: {
13431343
browsers: ['IE 11'],

‎packages/core/integration-tests/test/cache.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -2235,27 +2235,29 @@ describe('cache', function() {
22352235

22362236
it('should update when minify changes', async function() {
22372237
let b = await testCache({
2238+
entries: ['src/index.html'],
22382239
defaultTargetOptions: {
22392240
shouldScopeHoist: true,
22402241
shouldOptimize: false,
22412242
},
22422243
async update(b) {
22432244
let contents = await overlayFS.readFile(
2244-
b.bundleGraph.getBundles()[0].filePath,
2245+
b.bundleGraph.getBundles()[1].filePath,
22452246
'utf8',
22462247
);
22472248
assert(contents.includes('Test'), 'should include Test');
22482249

22492250
return {
22502251
defaultTargetOptions: {
2252+
shouldScopeHoist: true,
22512253
shouldOptimize: true,
22522254
},
22532255
};
22542256
},
22552257
});
22562258

22572259
let contents = await overlayFS.readFile(
2258-
b.bundleGraph.getBundles()[0].filePath,
2260+
b.bundleGraph.getBundles()[1].filePath,
22592261
'utf8',
22602262
);
22612263
assert(!contents.includes('Test'), 'should not include Test');

‎packages/core/integration-tests/test/sourcemaps.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ describe('sourcemaps', function() {
433433
source: inputs[0],
434434
generated: raw,
435435
str: 'const local',
436-
generatedStr: 'const o',
436+
generatedStr: 'const t',
437437
sourcePath: 'index.js',
438438
});
439439

@@ -442,7 +442,7 @@ describe('sourcemaps', function() {
442442
source: inputs[0],
443443
generated: raw,
444444
str: 'local.a',
445-
generatedStr: 'o.a',
445+
generatedStr: 't.a',
446446
sourcePath: 'index.js',
447447
});
448448

@@ -451,7 +451,7 @@ describe('sourcemaps', function() {
451451
source: inputs[1],
452452
generated: raw,
453453
str: 'exports.a',
454-
generatedStr: 't.a',
454+
generatedStr: 'o.a',
455455
sourcePath: 'local.js',
456456
});
457457

@@ -460,7 +460,7 @@ describe('sourcemaps', function() {
460460
source: inputs[2],
461461
generated: raw,
462462
str: 'exports.count = function(a, b) {',
463-
generatedStr: 't.count=function(e,n){',
463+
generatedStr: 'o.count=function(e,n){',
464464
sourcePath: 'utils/util.js',
465465
});
466466
});

0 commit comments

Comments
 (0)
Please sign in to comment.