tailwindcss.cli
4.3.3
dotnet tool install --global tailwindcss.cli --version 4.3.3
dotnet new tool-manifest
dotnet tool install --local tailwindcss.cli --version 4.3.3
#tool dotnet:?package=tailwindcss.cli&version=4.3.3
nuke :add-package tailwindcss.cli --version 4.3.3
A dotnet tool to install the tailwindcss cli for windows (x64), macos (x64 and arm64) and linux (x64 and arm64).
This repository and the published wrapper tool now target .NET 10. Building from source requires the .NET 10 SDK, and running the wrapper requires a .NET 10 runtime.
Installation
Global install
dotnet tool install --global tailwindcss.cli
Once installed, tailwindcss should now be added to the path and invokable in your command prompts or terminals.
If the .NET 10 runtime is not installed, the wrapper will not start.
Note: on macos when using the default terminal zsh, globally installed tools will not be found. They will be found however if you use a bash shell.
To add globally installed tools to your zsh profile, edit ~/.zshrc and add the following line:
export PATH=$HOME/.dotnet/tools:$PATH
See: https://github.com/dotnet/sdk/issues/9415 for more information.
Local install
dotnet tool install tailwindcss.cli
Once installed, dotnet tailwindcss should now be invokable in your command prompts or terminals.
Installing specific versions
# global installs
dotnet tool install tailwindcss.cli --version 3.0.10 --global
# local installs
dotnet tool install tailwindcss.cli --version 3.0.10
Upgrading installations
# global installs
dotnet tool update tailwindcss.cli --version 3.0.10 --global
# local installs
dotnet tool update tailwindcss.cli --version 3.0.11
Uninstallation
# global installs
dotnet tool uninstall tailwindcss.cli --global
# local installs
dotnet tool uninstall tailwindcss.cli
GitHub Actions auto-sync
This repository now includes a GitHub Actions workflow at .github/workflows/sync-missing-packages.yml that:
- discovers stable upstream Tailwind CSS releases with the full runtime asset set
- compares each version against the wrapper package plus all platform packages on NuGet
- only publishes the missing package/version combinations
The workflow runs on a daily schedule and also supports manual workflow_dispatch runs with:
dry_run: detect only, no NuGet publishversion: optionally restrict the run to one stable Tailwind version such as4.2.2
Publishing runs require a repository secret named NUGET_API_KEY.
Sync commands
You can run the same detection and sync flow locally:
# detect missing packages only
./build.sh DetectMissing --DryRun true
# detect missing packages for one version only
./build.sh DetectMissing --SpecificVersion 4.2.2 --DryRun true
# publish missing packages
./build.sh SyncMissing --NugetApiKey <key>
# publish missing packages for one version only
./build.sh SyncMissing --SpecificVersion 4.2.2 --NugetApiKey <key>
Every run writes a machine-readable summary to artifacts/package-sync-report.json.
Bootstrap process
On initial run, there is a bootstrap process to download the platform specific tailwindcss cli binary to be used. e.g.:
PS C:\Users\Duane> tailwindcss
Running on windows-x64, downloading tailwindcss cli v3.0.23 using nuget...
Package found in repository nuget.org: https://api.nuget.org/v3/index.json
Downloaded package tailwindcss.cli.windows.x64 v3.0.23 from nuget.org.
Extracting tailwindcss cli for windows-x64...
tailwindcss v3.0.23
Usage:
tailwindcss [--input input.css] [--output output.css] [--watch] [options...]
tailwindcss init [--full] [--postcss] [options...]
...
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.3.3 | 30 | 7/17/2026 |
| 4.3.2 | 135 | 6/30/2026 |
| 4.3.1 | 162 | 6/13/2026 |
| 4.3.0 | 184 | 5/9/2026 |
| 4.2.4 | 169 | 4/22/2026 |
| 4.2.3 | 112 | 4/21/2026 |
| 4.2.2 | 608 | 3/25/2026 |
| 4.2.1 | 120 | 3/25/2026 |
| 4.2.0 | 107 | 3/25/2026 |
| 4.1.18 | 116 | 3/25/2026 |
| 4.1.17 | 114 | 3/25/2026 |
| 4.1.16 | 108 | 3/25/2026 |
| 4.1.15 | 103 | 3/25/2026 |
| 4.1.14 | 106 | 3/25/2026 |
| 4.1.13 | 111 | 3/25/2026 |
| 4.1.12 | 114 | 3/25/2026 |
| 4.1.11 | 114 | 3/25/2026 |
| 4.1.10 | 111 | 3/25/2026 |
| 4.1.9 | 116 | 3/25/2026 |
| 4.1.8 | 114 | 3/25/2026 |
### Fixed
- Support `--watch --poll[=ms]` in `@tailwindcss/cli` when filesystem events are unreliable or unavailable ([#20297](https://github.com/tailwindlabs/tailwindcss/pull/20297))
- Canonicalization: match arbitrary hex colors against theme colors case-insensitively (e.g. `bg-[#fff]` and `bg-[#FFF]` → `bg-white`) ([#20298](https://github.com/tailwindlabs/tailwindcss/pull/20298))
- Prevent Preflight from overriding Firefox's native `iframe:focus-visible` outline styles ([#20292](https://github.com/tailwindlabs/tailwindcss/pull/20292))
- Ensure `theme('colors.foo')` in JS plugins resolves correctly when both `--color-foo` and `--color-foo-bar` exist ([#20299](https://github.com/tailwindlabs/tailwindcss/pull/20299))
- Ensure fractional opacity modifiers work with named shadow sizes like `shadow-sm/12.5`, `text-shadow-sm/12.5`, `drop-shadow-sm/12.5`, and `inset-shadow-sm/12.5` ([#20302](https://github.com/tailwindlabs/tailwindcss/pull/20302))
- Parse selectors like `[data-foo]div` as two selectors instead of one ([#20303](https://github.com/tailwindlabs/tailwindcss/pull/20303))
- Ensure `@tailwindcss/postcss` rebuilds when a preprocessor like Sass changes the input CSS without changing the input file on disk ([#20310](https://github.com/tailwindlabs/tailwindcss/pull/20310))
- Ensure CSS nesting is handled even when Lightning CSS isn't run, such as in `@tailwindcss/browser` and Tailwind Play ([#20124](https://github.com/tailwindlabs/tailwindcss/pull/20124))
- Prevent achromatic theme colors from shifting hue when mixed in polar color spaces like `oklch` ([#20314](https://github.com/tailwindlabs/tailwindcss/pull/20314))
- Ensure `--spacing(0)` is optimized to `0px` instead of `0` so it remains a `<length>` when used in `calc(…)` ([#20319](https://github.com/tailwindlabs/tailwindcss/pull/20319))
- Load `@parcel/watcher` only when needed in `@tailwindcss/cli --watch` mode, so one-off builds and `--watch --poll` work when `@parcel/watcher` can't be loaded ([#20325](https://github.com/tailwindlabs/tailwindcss/pull/20325))
- Use explicit platform fonts instead of `system-ui` and `ui-sans-serif` so CJK text respects the page's `lang` attribute on Windows ([#20318](https://github.com/tailwindlabs/tailwindcss/pull/20318))
- Prevent `@tailwindcss/upgrade` from rewriting ignored files when run from a subdirectory ([#20329](https://github.com/tailwindlabs/tailwindcss/pull/20329))
- Ensure earlier `@source` rules pointing to nested files are scanned when later `@source` rules point to files in parent folders ([#20335](https://github.com/tailwindlabs/tailwindcss/pull/20335))
- Prevent `@tailwindcss/vite` from triggering full page reloads when scanned files are processed by Vite but haven't been loaded as modules yet ([#20336](https://github.com/tailwindlabs/tailwindcss/pull/20336))