Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support tailwindcss v3.1.x and v3.2.y #21

Open
wants to merge 10 commits into
base: main
Choose a base branch
from

Conversation

colinaaa
Copy link
Collaborator

@colinaaa colinaaa commented Nov 23, 2024

Summary

Support Tailwind CSS v3.1 and Tailwind CSS v3.2.


Details

Since Tailwind CSS support using ESM configuration in V3.3, we need to use CJS configuration before that.

As mentioned in #7 (comment), we use readFile + require.resolve to get the version of tailwindcss/package.json.

  • If satisfies(version, ^3.3.0), we will generate ESM configuration to support both ESM and CJS.
  • Else, we generate CJS configuration.

Test plan

We setup two new entries in the testing matrix

  • tailwindcss v3.1.0 with Ubuntu
  • tailwindcss v3.1.0 with Windows

As you can see, the test is failing at 0e05c6a.

And after the fix is landed in e783415, the test for old tailwindcss is passing.


Related links

close: #18

@colinaaa colinaaa changed the title feat: support tailwindcss before v3.3.0 feat: support tailwindcss v3.1.x and v3.2.y Nov 23, 2024
@colinaaa colinaaa marked this pull request as ready for review November 23, 2024 18:00

async #resolveTailwindCSSVersion(): Promise<string> {
const require = createRequire(import.meta.url);
const pkgPath = require.resolve('tailwindcss/package.json');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

require.resolve('tailwindcss/package.json') may misjudge in monorepo

//
// In this case, we provide an ESM configuration to support both ESM and CJS.
return [
'tailwind.config.mjs',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we align user config's ext?

'tailwind.config.cjs',
existsSync(userConfig)
? `\
const config = require(${JSON.stringify(userConfig)})
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we need to consider the userConfig is an ESM file?

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.

[Bug] Error: [ERR_REQUIRE_ESM]: require() of ES Module /tmp/unit-v2h13040/tailwind.config.js
3 participants