tailwindcss/packages
It's Me! bfb5732b0b
Fall back to the plugin base when PostCSS has no from option (#19980)
## Summary

`@tailwindcss/postcss` derives `inputBasePath` from `result.opts.from`:

```ts
let inputFile = result.opts.from ?? ''
let inputBasePath = path.dirname(path.resolve(inputFile))
```

When PostCSS calls the plugin without `from` (some bundlers, including
Turbopack, do this for certain CSS inputs), `inputFile` is `''`,
`path.resolve('')` returns `process.cwd()`, and `path.dirname(...)`
therefore returns the **parent of CWD**. The downstream `compileAst({
base: inputBasePath })` call then asks the resolver to find
`tailwindcss` from one level above the project root, which fails with:

```
Can't resolve 'tailwindcss' in '<parent of CWD>'
```

The plugin already computes `base = opts.base ?? process.cwd()` near the
top. Reusing that as the fallback gives a sensible default (CWD) and
respects an explicit `opts.base` when set.

```diff
-let inputBasePath = path.dirname(path.resolve(inputFile))
+let inputBasePath = inputFile
+  ? path.dirname(path.resolve(inputFile))
+  : base
```

## Test plan

Added a test in `packages/@tailwindcss-postcss/src/index.test.ts` that
processes `@import 'tailwindcss'` via `processor.process(input)` with no
`from` option. Before the fix, this throws `Error: Can't resolve
'tailwindcss' in '<parent of CWD>'`; after the fix, the import resolves
and the processor returns non-empty CSS.

I wasn't able to run the suite locally — `pnpm build` requires `cargo`
for `@tailwindcss/oxide` and I don't have a Rust toolchain set up — so
the test has been written to match existing conventions in
`index.test.ts` (vitest, plain
`postcss([tailwindcss({...})]).process(...)`), and I'm relying on CI to
verify.

---------

Co-authored-by: rebasecase <rebasecase@localhost>
Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
2026-04-26 13:45:39 +00:00
..
@tailwindcss-browser Bump dependencies (#19957) 2026-04-24 21:21:12 +02:00
@tailwindcss-cli Bump dependencies (#19957) 2026-04-24 21:21:12 +02:00
@tailwindcss-node Bump dependencies (#19957) 2026-04-24 21:21:12 +02:00
@tailwindcss-postcss Fall back to the plugin base when PostCSS has no from option (#19980) 2026-04-26 13:45:39 +00:00
@tailwindcss-standalone Bump dependencies (#19957) 2026-04-24 21:21:12 +02:00
@tailwindcss-upgrade Bump dependencies (#19957) 2026-04-24 21:21:12 +02:00
@tailwindcss-vite fix(@tailwindcss/vite): include @variant in feature detection (#19966) 2026-04-24 14:11:48 +00:00
@tailwindcss-webpack Bump dependencies (#19957) 2026-04-24 21:21:12 +02:00
internal-example-plugin Prefix internal modules with internal-* (#14074) 2024-07-29 10:58:07 -04:00
tailwindcss Bump dependencies (#19957) 2026-04-24 21:21:12 +02:00
tsconfig.base.json Improve debug logs (#15303) 2024-12-11 15:27:20 +01:00