Improve collapsing of duplicate declarations #6856
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR will improve the collapsing of duplicate declarations logic.
In theory, we don't have to do anything because the browser is smart enough to figure everything out. However, leaving in duplicate properties is not that ideal for file size.
Our previous method was pretty simple: if you see a declaration you already saw in this rule, delete the previous one and keep the current one.
This works pretty well, but this gets rid of all the declarations with the same property. This is not great for overrides for older browsers.
In a perfect world, we can handle this based on your target browser but this is a lot of unnecessary complexity and will slow things down performance wise.
Alternative, we improved the solution by being a bit smarter:
This means that we will reduce this:
To:
This will reduce the values that we are 100% sure that can be safely removed. This will still result in some overrides but the browser can handle those for you.
We do pay a small performance price because we now need to analyse each value to know the unit, but this should be neglectable because we will only do this on actual duplicated properties. If you don't have duplicate properties, then this change won't change anything.
Fixes: #6844