Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Bug]: minify with class and media merging wrongly #1706

@pedrobachiega

Description

@pedrobachiega

Describe the bug

I'm using tailwindcss and a part of the generated CSS is the following:

@layer utilities {
  .dark\:border-zinc-700 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-zinc-700);
    }
  }
  .dark\:bg-black {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-black);
    }
  }
  .dark\:bg-neutralDark {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-neutralDark);
    }
  }
  .dark\:text-gray-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-gray-200);
    }
  }
  .dark\:text-white {
    @media (prefers-color-scheme: dark) {
      color: var(--color-white);
    }
  }
}

but when I run npm run build to create the production assets, and I think that is when cssnano/postcss do it's magic, the generated CSS has the following output:

.dark\:bg-black,.dark\:bg-neutralDark,.dark\:border-zinc-700,.dark\:text-gray-200,.dark\:text-white{@media (prefers-color-scheme:dark){color:var(--color-white)}}

The css.map seems correct:

.dark\\:border-zinc-700 {\n    @media (prefers-color-scheme: dark) {\n      border-color: var(--color-zinc-700);\n    }\n  }\n  .dark\\:bg-black {\n    @media (prefers-color-scheme: dark) {\n      background-color: var(--color-black);\n    }\n  }\n  .dark\\:bg-neutralDark {\n    @media (prefers-color-scheme: dark) {\n      background-color: var(--color-neutralDark);\n    }\n  }\n  .dark\\:text-gray-200 {\n    @media (prefers-color-scheme: dark) {\n      color: var(--color-gray-200);\n    }\n  }\n  .dark\\:text-white {\n    @media (prefers-color-scheme: dark) {\n      color: var(--color-white);\n    }

So, it seems that it is merging by the @media, but messing with the right values.

Expected behaviour

The expected CSS should be something like this:

.dark\:border-zinc-700{@media (prefers-color-scheme:dark){border-color:var(--color-zinc-700);}}.dark\:bg-black{@media (prefers-color-scheme:dark){background-color:var(--color-black);}}.dark\:bg-neutralDark{@media (prefers-color-scheme:dark){background-color:var(--color-neutralDark);}}.dark\:text-gray-200{@media (prefers-color-scheme:dark){color:var(--color-gray-200);}}.dark\:text-white{@media (prefers-color-scheme:dark){color:var(--color-white);}}

Steps to reproduce

Sorry, I'm not sure how to simple reproduce, but like I said, I have that css at my React project and when I run npm run build the build static css generated is the reported.

Version

7.0.7

Preset

(no preset)

Environment

System:
  OS: macOS 14.2.1
  CPU: (8) x64 Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz
  Memory: 88.37 MB / 16.00 GB
  Shell: 5.9 - /bin/zsh

Package details

├─┬ @tailwindcss/[email protected]
│ └── [email protected] deduped
├─┬ [email protected]
│ ├── [email protected] deduped
│ └── [email protected] deduped
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected] deduped
│ │ │ └─┬ [email protected]
│ │ │   └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ └── [email protected] deduped
│ └── [email protected] deduped
├── [email protected]
└─┬ [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ └── [email protected] deduped
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ ├─┬ [email protected]
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ ├── [email protected] deduped
  │ │ │ │ └─┬ [email protected]
  │ │ │ │   └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ ├─┬ [email protected]
  │ │ │ │ └── [email protected] deduped
  │ │ │ └── [email protected] deduped
  │ │ └── [email protected] deduped
  │ └── [email protected] deduped
  ├─┬ [email protected]
  │ └── [email protected] deduped
  ├─┬ [email protected]
  │ └── [email protected] deduped
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ └── [email protected] deduped
  ├─┬ [email protected]
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ @csstools/[email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ ├─┬ [email protected]
  │ │ └── [email protected] deduped
  │ └── [email protected] deduped
  ├── [email protected] deduped
  ├─┬ [email protected]
  │ └── [email protected]
  └─┬ [email protected]
    ├─┬ [email protected]
    │ └── [email protected] deduped
    ├─┬ [email protected]
    │ └── [email protected] deduped
    ├─┬ [email protected]
    │ └── [email protected] deduped
    ├─┬ [email protected]
    │ └── [email protected] deduped
    └── [email protected] deduped

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions