Skip to content

Accept minor and patch versions in targets - #20

Merged
marcoroth merged 1 commit into
mainfrom
targets-minor-versions
Oct 14, 2026
Merged

marcoroth merged 1 commit into
mainfrom
targets-minor-versions

Conversation

@marcoroth

@marcoroth marcoroth commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

This pull request updates targets to accept a minor or patch version for each browser, so a call can target a release like Safari 15.4.

An Integer still means a major version. A Float or a String now also sets the minor and patch versions, encoded as major << 16 | minor << 8 | patch, the same encoding the Node binding uses.

LightningCSS.transform(".a { color: oklch(60% .2 30) }", targets: { safari: 15 }, minify: true).code
#=> ".a{color:lab(51.6908% 61.9679 48.0969)}"

LightningCSS.transform(".a { color: oklch(60% .2 30) }", targets: { safari: 15.4 }, minify: true).code
#=> ".a{color:oklch(60% .2 30)}"

LightningCSS.transform(".a { color: oklch(60% .2 30) }", targets: { ios_saf: "15.4.1" }, minify: true).code
#=> ".a{color:oklch(60% .2 30)}"

A Float loses a minor version above 9, since 16.10 is 16.1, so we recommend using a String instead.

A version that doesn't parse raises a LightningCSS::OptionError that names the browser:

LightningCSS.transform(".a{}", targets: { safari: "15.a" })
#=> LightningCSS::OptionError: Invalid version "15.a" for safari in targets

Resolves #16

@marcoroth
marcoroth merged commit 60a293d into main Oct 14, 2026
11 checks passed
@marcoroth
marcoroth deleted the targets-minor-versions branch October 14, 2026 06:17
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.

targets only accept major versions

1 participant