diff --git a/CHANGELOG.md b/CHANGELOG.md index d3fe6574524c..10c2a97bf85e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Ensure individual logical property utilities are sorted later than left/right pair utilities ([#14777](https://github.com/tailwindlabs/tailwindcss/pull/14777)) - Don't migrate important modifiers inside conditional statements in Vue and Alpine (e.g. `
`) ([#14774](https://github.com/tailwindlabs/tailwindcss/pull/14774)) +- Ensure third-party plugins with `exports` in their `package.json` are resolved correctly ([#14775](https://github.com/tailwindlabs/tailwindcss/pull/14775)) - _Upgrade (experimental)_: Ensure `@import` statements for relative CSS files are actually migrated to use relative path syntax ([#14769](https://github.com/tailwindlabs/tailwindcss/pull/14769)) ## [4.0.0-alpha.29] - 2024-10-23 diff --git a/integrations/postcss/plugins.test.ts b/integrations/postcss/plugins.test.ts new file mode 100644 index 000000000000..3081b7bfee9f --- /dev/null +++ b/integrations/postcss/plugins.test.ts @@ -0,0 +1,79 @@ +import { candidate, css, html, js, json, test } from '../utils' + +test( + 'builds the `@headlessui/tailwindcss` plugin utilities (CJS)', + { + fs: { + 'package.json': json` + { + "type": "commonjs", + "dependencies": { + "postcss": "^8", + "postcss-cli": "^10", + "tailwindcss": "workspace:^", + "@tailwindcss/postcss": "workspace:^", + "@headlessui/tailwindcss": "^0.2.1" + } + } + `, + 'postcss.config.cjs': js` + let tailwindcss = require('@tailwindcss/postcss') + module.exports = { + plugins: [tailwindcss()], + } + `, + 'index.html': html` +
+ `, + 'src/index.css': css` + @import 'tailwindcss/theme' theme(reference); + @import 'tailwindcss/utilities'; + @plugin '@headlessui/tailwindcss'; + `, + }, + }, + async ({ fs, exec }) => { + await exec('pnpm postcss src/index.css --output dist/out.css') + + await fs.expectFileToContain('dist/out.css', [candidate`ui-open:flex`]) + }, +) + +test( + 'builds the `@headlessui/tailwindcss` plugin utilities (ESM)', + { + fs: { + 'package.json': json` + { + "type": "module", + "dependencies": { + "postcss": "^8", + "postcss-cli": "^10", + "tailwindcss": "workspace:^", + "@tailwindcss/postcss": "workspace:^", + "@headlessui/tailwindcss": "^0.2.1" + } + } + `, + 'postcss.config.mjs': js` + import tailwindcss from '@tailwindcss/postcss' + export default { + plugins: [tailwindcss()], + } + `, + 'index.html': html` +
+ `, + 'src/index.css': css` + @import 'tailwindcss/theme' theme(reference); + @import 'tailwindcss/utilities'; + @plugin '@headlessui/tailwindcss'; + `, + }, + }, + async ({ fs, exec }) => { + await exec('pnpm postcss src/index.css --output dist/out.css') + + await fs.expectFileToContain('dist/out.css', [candidate`ui-open:flex`]) + }, +) diff --git a/packages/@tailwindcss-node/src/compile.ts b/packages/@tailwindcss-node/src/compile.ts index 4804a1c8bb87..9f3f58fddae4 100644 --- a/packages/@tailwindcss-node/src/compile.ts +++ b/packages/@tailwindcss-node/src/compile.ts @@ -127,6 +127,7 @@ const jsResolver = EnhancedResolve.ResolverFactory.createResolver({ fileSystem: new EnhancedResolve.CachedInputFileSystem(fs, 4000), useSyncFileSystemCalls: true, extensions: ['.js', '.json', '.node', '.ts'], + conditionNames: import.meta.url ? ['node', 'import'] : ['node', 'require'], }) function resolveJsId(id: string, base: string): Promise {