Skip to content

Commit 5f1f9aa

Browse files
committed
Fix v3 config loading with Jiti re-exports
1 parent 9907134 commit 5f1f9aa

File tree

10 files changed

+86
-6
lines changed

10 files changed

+86
-6
lines changed

src/versions/v3.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
// @ts-check
22
import * as path from 'node:path'
3+
import { pathToFileURL } from 'node:url'
34
import clearModule from 'clear-module'
5+
import { createJiti } from 'jiti'
46
// @ts-ignore
57
import { generateRules as generateRulesFallback } from 'tailwindcss-v3/lib/lib/generateRules'
68
// @ts-ignore
79
import { createContext as createContextFallback } from 'tailwindcss-v3/lib/lib/setupContextUtils'
8-
import loadConfigFallback from 'tailwindcss-v3/loadConfig'
910
import resolveConfigFallback from 'tailwindcss-v3/resolveConfig'
1011
import type { RequiredConfig } from 'tailwindcss-v3/types/config.js'
1112
import type { UnifiedApi } from '../types'
@@ -36,24 +37,26 @@ export async function loadV3(pkgDir: string | null, jsConfig: string | null): Pr
3637
let createContext = createContextFallback
3738
let generateRules: GenerateRules = generateRulesFallback
3839
let resolveConfig = resolveConfigFallback
39-
let loadConfig = loadConfigFallback
4040
let tailwindConfig: RequiredConfig = { content: [] }
4141

4242
try {
4343
if (pkgDir) {
4444
resolveConfig = require(path.join(pkgDir, 'resolveConfig'))
4545
createContext = require(path.join(pkgDir, 'lib/lib/setupContextUtils')).createContext
4646
generateRules = require(path.join(pkgDir, 'lib/lib/generateRules')).generateRules
47-
// Prior to `tailwindcss@3.3.0` this won't exist so we load it last
48-
loadConfig = require(path.join(pkgDir, 'loadConfig'))
4947
}
5048
} catch {}
5149

5250
try {
5351
if (jsConfig) {
5452
clearModule(jsConfig)
55-
let loadedConfig = loadConfig(jsConfig)
56-
tailwindConfig = loadedConfig.default ?? loadedConfig
53+
let jiti = createJiti(import.meta.url, {
54+
moduleCache: false,
55+
fsCache: false,
56+
interopDefault: true,
57+
})
58+
let url = pathToFileURL(jsConfig)
59+
tailwindConfig = await jiti.import<RequiredConfig>(url.href, { default: true })
5760
}
5861
} catch (err) {
5962
console.error(`Unable to load your Tailwind CSS v3 config: ${jsConfig}`)

tests/fixtures.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ let fixtures = [
6161
dir: 'v3-2',
6262
ext: 'html',
6363
},
64+
{
65+
name: 'v3: re-exported config with jiti',
66+
dir: 'v3-jiti-reexport',
67+
ext: 'html',
68+
},
6469
{
6570
name: 'plugins',
6671
dir: 'plugins',
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div class="sm:p-0 p-0"></div>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div class="p-0 sm:p-0"></div>

tests/fixtures/v3-jiti-reexport/package-lock.json

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"private": true,
3+
"dependencies": {
4+
"@repo/tailwind-config": "file:./packages/tailwind-config"
5+
}
6+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createJiti } from 'jiti'
2+
3+
const jiti = createJiti(import.meta.url, {
4+
interopDefault: true,
5+
})
6+
7+
const _module = await jiti.import(new URL('../src/index.ts', import.meta.url).href, {
8+
default: true,
9+
})
10+
11+
export default _module?.default ?? _module
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "@repo/tailwind-config",
3+
"version": "1.0.0",
4+
"type": "module",
5+
"main": "./dist/index.mjs",
6+
"module": "./dist/index.mjs",
7+
"exports": {
8+
".": {
9+
"import": "./dist/index.mjs",
10+
"require": "./dist/index.mjs",
11+
"default": "./dist/index.mjs"
12+
}
13+
},
14+
"dependencies": {
15+
"jiti": "^2.6.1"
16+
}
17+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default {
2+
content: ['./index.html'],
3+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default } from '@repo/tailwind-config'

0 commit comments

Comments
 (0)