mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
Fix issue with Tailwind modifying global state (#9294)
* Fix issue with Tailwind modifying global state When running Tailwind, it modifies the plugin defaults parameters. As a result Tailwind using a Tailwind plugin in the same process twice yields different results. * Add failing test * Undo defaults change * wip * Fix shared mutation problem * Update changelog Co-authored-by: Jordan Pittman <jordan@cryptica.me>
This commit is contained in:
parent
db50bbbc71
commit
88e98f557c
@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Don't output duplicate utilities ([#9208](https://github.com/tailwindlabs/tailwindcss/pull/9208))
|
||||
- Fix `fontFamily` config TypeScript types ([#9214](https://github.com/tailwindlabs/tailwindcss/pull/9214))
|
||||
- Handle variants on complex selector utilities ([#9262](https://github.com/tailwindlabs/tailwindcss/pull/9262))
|
||||
- Don't mutate shared config objects ([#9294](https://github.com/tailwindlabs/tailwindcss/pull/9294))
|
||||
|
||||
## [3.1.8] - 2022-08-05
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ function mergeWith(target, ...sources) {
|
||||
|
||||
if (merged === undefined) {
|
||||
if (isObject(target[k]) && isObject(source[k])) {
|
||||
target[k] = mergeWith(target[k], source[k], customizer)
|
||||
target[k] = mergeWith({}, target[k], source[k], customizer)
|
||||
} else {
|
||||
target[k] = source[k]
|
||||
}
|
||||
|
||||
@ -1763,3 +1763,30 @@ test('all helpers can be destructured from the first function argument', () => {
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
test('does not duplicate extended configs every time resolveConfig is called', () => {
|
||||
let shared = {
|
||||
foo: { bar: { baz: [{ color: 'red' }] } },
|
||||
}
|
||||
|
||||
const createConfig = (color) =>
|
||||
resolveConfig([
|
||||
{
|
||||
theme: {
|
||||
foo: shared.foo,
|
||||
extend: {
|
||||
foo: { bar: { baz: { color } } },
|
||||
},
|
||||
},
|
||||
},
|
||||
])
|
||||
|
||||
createConfig('orange')
|
||||
createConfig('yellow')
|
||||
createConfig('green')
|
||||
|
||||
const result = createConfig('blue')
|
||||
|
||||
expect(shared.foo.bar.baz).toMatchObject([{ color: 'red' }])
|
||||
expect(result.theme.foo.bar.baz).toMatchObject([{ color: 'red' }, { color: 'blue' }])
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user