Skip to content

[Bug]: Optimisation convertValues removes the meaningful unit from 0 in keyframes #1641

@Serator

Description

@Serator

Describe the bug

When specifying a border-image-width animation inside a keyframe, the value 0 must retain its unit, otherwise the animation will be broken.

iShot_2024-06-24_13.29.08.mp4

https://play.tailwindcss.com/6vgNB6AWmx?file=css

Expected behaviour

The value 0 must be saved in the properties used inside the keyframe.

Steps to reproduce

https://cssnano.github.io/cssnano/playground/#eyJpbnB1dCI6IkBrZXlmcmFtZXMgdGVzdCB7XG4gIDAlIHtcbiAgICBib3JkZXItaW1hZ2Utd2lkdGg6IDAgMCAxMDAlIDAlO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYm9yZGVyLWltYWdlLXdpZHRoOiAwIDAgMTAwJSAxMDAlO1xuICB9XG59IiwiY29uZmlnIjoiY3NzbmFuby1wcmVzZXQtZGVmYXVsdCJ9

image

Version

7.0.3

Preset

default

Package details

├─┬ cssnano@7.0.3
│ ├─┬ cssnano-preset-default@7.0.3
│ │ ├─┬ css-declaration-sorter@7.2.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ cssnano-utils@5.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-calc@10.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-colormin@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-convert-values@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-discard-comments@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-discard-duplicates@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-discard-empty@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-discard-overridden@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-merge-longhand@7.0.2
│ │ │ ├── postcss@8.4.38 deduped
│ │ │ └─┬ stylehacks@7.0.2
│ │ │   └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-merge-rules@7.0.2
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-minify-font-values@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-minify-gradients@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-minify-params@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-minify-selectors@7.0.2
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-charset@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-display-values@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-positions@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-repeat-style@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-string@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-timing-functions@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-unicode@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-url@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-normalize-whitespace@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-ordered-values@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-reduce-initial@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-reduce-transforms@7.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-svgo@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ ├─┬ postcss-unique-selectors@7.0.1
│ │ │ └── postcss@8.4.38 deduped
│ │ └── postcss@8.4.38 deduped
│ └── postcss@8.4.38 deduped
├─┬ eslint-plugin-svelte@2.40.0
│ ├─┬ postcss-load-config@3.1.4
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-safe-parser@6.0.0
│ │ └── postcss@8.4.38 deduped
│ ├── postcss@8.4.38 deduped
│ └─┬ svelte-eslint-parser@0.39.1
│   ├─┬ postcss-scss@4.0.9
│   │ └── postcss@8.4.38 deduped
│   └── postcss@8.4.38 deduped
├─┬ htmlnano@2.1.1
│ ├── cssnano@7.0.3 deduped
│ └── postcss@8.4.38 deduped
├─┬ postcss-preset-env@9.5.14
│ ├─┬ @csstools/postcss-cascade-layers@4.0.6
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-color-function@3.0.16
│ │ ├─┬ @csstools/utilities@1.0.0
│ │ │ └── postcss@8.4.38 deduped
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-color-mix-function@2.0.16
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-exponential-functions@1.0.7
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-font-format-keywords@3.0.2
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-gamut-mapping@1.0.9
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-gradients-interpolation-method@4.0.17
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-hwb-function@3.0.15
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-ic-unit@3.0.6
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-initial@1.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-is-pseudo-class@4.0.8
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-light-dark-function@1.0.5
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-logical-float-and-clear@2.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-logical-overflow@1.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-logical-overscroll-behavior@1.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-logical-resize@2.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-logical-viewport-units@2.0.9
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-media-minmax@1.1.6
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-media-queries-aspect-ratio-number-values@2.0.9
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-nested-calc@3.0.2
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-normalize-display-values@3.0.2
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-oklab-function@3.0.16
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-progressive-custom-properties@3.2.0
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-relative-color-syntax@2.0.16
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-scope-pseudo-class@3.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-stepped-value-functions@3.0.8
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-text-decoration-shorthand@3.0.6
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-trigonometric-functions@3.0.8
│ │ └── postcss@8.4.38 deduped
│ ├─┬ @csstools/postcss-unset-value@3.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ autoprefixer@10.4.19
│ │ └── postcss@8.4.38 deduped
│ ├─┬ css-blank-pseudo@6.0.2
│ │ └── postcss@8.4.38 deduped
│ ├─┬ css-has-pseudo@6.0.5
│ │ └── postcss@8.4.38 deduped
│ ├─┬ css-prefers-color-scheme@9.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-attribute-case-insensitive@6.0.3
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-clamp@4.1.0
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-color-functional-notation@6.0.11
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-color-hex-alpha@9.0.4
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-color-rebeccapurple@9.0.3
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-custom-media@10.0.6
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-custom-properties@13.3.10
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-custom-selectors@7.1.10
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-dir-pseudo-class@8.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-double-position-gradients@5.0.6
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-focus-visible@9.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-focus-within@8.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-font-variant@5.0.0
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-gap-properties@5.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-image-set-function@6.0.3
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-lab-function@6.0.16
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-logical@7.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-nesting@12.1.5
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-opacity-percentage@2.0.0
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-overflow-shorthand@5.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-page-break@3.0.4
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-place@9.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-pseudo-class-any-link@9.0.2
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-replace-overflow-wrap@4.0.0
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-selector-not@7.0.2
│ │ └── postcss@8.4.38 deduped
│ └── postcss@8.4.38 deduped
├── postcss@8.4.38
├─┬ svelte-check@3.8.1
│ └─┬ svelte-preprocess@5.1.4
│   └── postcss@8.4.38 deduped
├─┬ tailwindcss@3.4.4
│ ├─┬ postcss-import@15.1.0
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-js@4.0.1
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-load-config@4.0.2
│ │ └── postcss@8.4.38 deduped
│ ├─┬ postcss-nested@6.0.1
│ │ └── postcss@8.4.38 deduped
│ └── postcss@8.4.38 deduped
└─┬ vite@5.3.1
  └── postcss@8.4.38 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