Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix CSS order when merging type change bundles #8766

Merged
merged 2 commits into from
Jan 17, 2023
Merged

Conversation

devongovett
Copy link
Member

This fixes a bug when merging type change bundles that could result in CSS being bundled in the wrong order. We need to merge the contents of later bundles into earlier bundles, not the other way around.

I think this was potentially a workaround for an issue with CSS modules where there was no dependency in the CSS asset to composes deps, only in the JS, which left the graph in a weird state. I don't remember why that was the case, but now the dependency is in both places which fixes the problem. The test output was also slightly incorrect before anyway.


let css = await outputFS.readFile(path.join(distDir, 'index.css'), 'utf8');
assert.ok(css.indexOf('.c {') < css.indexOf('.local {'));
assert.ok(css.indexOf('.local {') < css.indexOf('.index {'));
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

previous order was c, index, local. now order is c, local, index.

@@ -353,6 +353,7 @@ describe('css modules', () => {
assert(css.includes('height: 100px;'));
assert(css.includes('height: 300px;'));
assert(css.indexOf('_test') < css.indexOf('_intermediate'));
assert(css.indexOf('_intermediate') < css.indexOf('_composes5'));
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

previously composes5 was first, now it's last as expected.

@parcel-benchmark
Copy link

parcel-benchmark commented Jan 14, 2023

Benchmark Results

Kitchen Sink ✅

Timings

Description Time Difference
Cold 1.56s +23.00ms
Cached 341.00ms -45.00ms 🚀

Cold Bundles

Bundle Size Difference Time Difference
dist/legacy/parcel.7cdb0fad.webp 102.94kb +0.00b 108.00ms -146.00ms 🚀
dist/legacy/parcel.7cdb0fad.webp 102.94kb +0.00b 109.00ms -146.00ms 🚀
dist/modern/parcel.7cdb0fad.webp 102.94kb +0.00b 109.00ms -147.00ms 🚀
dist/legacy/index.2c76ad23.js 1.66kb +0.00b 455.00ms +29.00ms ⚠️
dist/legacy/index.8aaa89c9.js 1.20kb +0.00b 455.00ms +28.00ms ⚠️
dist/modern/index.6be20f01.js 1.13kb +0.00b 455.00ms +28.00ms ⚠️
dist/legacy/index.html 826.00b +0.00b 561.00ms +35.00ms ⚠️
dist/modern/index.html 749.00b +0.00b 561.00ms +41.00ms ⚠️
dist/legacy/index.b8ae99ba.css 94.00b +0.00b 283.00ms +22.00ms ⚠️
dist/modern/index.31cedca9.css 94.00b +0.00b 283.00ms +22.00ms ⚠️

Cached Bundles

No bundle changes detected.

React HackerNews ✅

Timings

Description Time Difference
Cold 10.22s +167.00ms
Cached 467.00ms +5.00ms

Cold Bundles

No bundle changes detected.

Cached Bundles

No bundle changes detected.

AtlasKit Editor ✅

Timings

Description Time Difference
Cold 1.75m -2.40s
Cached 2.37s -25.00ms

Cold Bundles

No bundle changes detected.

Cached Bundles

No bundle changes detected.

Three.js ✅

Timings

Description Time Difference
Cold 7.41s +109.00ms
Cached 291.00ms +2.00ms

Cold Bundles

No bundle changes detected.

Cached Bundles

No bundle changes detected.

Click here to view a detailed benchmark overview.

Copy link
Contributor

@AGawrys AGawrys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good, just realized we need to alter bundle size here as well as adding the asset, I'll add that in another PR

@devongovett devongovett merged commit ddae31a into v2 Jan 17, 2023
@devongovett devongovett deleted the fix-css-order branch January 17, 2023 19:12
marcins pushed a commit to marcins/parcel that referenced this pull request Jul 14, 2023
* upstream/v2: (33 commits)
  v2.8.3
  Changelog for v2.8.3
  Address bug by updating an asset reference and merge conditions (parcel-bundler#8762)
  Fix CSS order when merging type change bundles (parcel-bundler#8766)
  fixing failing build for contributors on Linux using Node 18 (parcel-bundler#8763)
  Extension: Importers View and separate LSP protocol package (parcel-bundler#8747)
  Bump swc to fix sourcemaps with Windows line endings (parcel-bundler#8756)
  Apply HMR updates in topological order (parcel-bundler#8752)
  Make extension packaging work (parcel-bundler#8730)
  Typed api.storeResult (parcel-bundler#8732)
  Refactor LSP to use vscode-jsonrpc (parcel-bundler#8728)
  Bump swc (parcel-bundler#8742)
  Recursively check reachability when removing asset graphs from bundles in deduplication (parcel-bundler#6004)
  Fix tsc sourcemaps metadata (parcel-bundler#8734)
  Assigning to `this` in CommonJS (parcel-bundler#8737)
  Don't retarget dependencies if a symbol is imported multiple times with different local names (parcel-bundler#8738)
  Add a note about using flow in CONTRIBUTING.md (parcel-bundler#8731)
  filter out title execArgv to workers (parcel-bundler#8719)
  Document more of the BundleGraph class (parcel-bundler#8711)
  Fixed the hmr connection with host 0.0.0.0 (parcel-bundler#7357)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants