Skip to content

Commit e148870

Browse files
committed
Resolve style exports field in postcss import
1 parent 83069f8 commit e148870

File tree

7 files changed

+67
-1
lines changed

7 files changed

+67
-1
lines changed

Diff for: packages/tailwindcss-language-server/src/resolve-css-imports.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
11
import postcss from 'postcss'
22
import postcssImport from 'postcss-import'
3+
import { createStyleResolver } from './util/resolve'
34

4-
const resolveImports = postcss([postcssImport()])
5+
const resolver = createStyleResolver()
6+
7+
const resolveImports = postcss([
8+
postcssImport({
9+
resolve(id, basedir) {
10+
let paths = resolver.resolveSync({}, basedir, id)
11+
return paths
12+
? paths
13+
: id
14+
},
15+
}),
16+
])
517

618
export function resolveCssImports() {
719
return resolveImports

Diff for: packages/tailwindcss-language-server/src/util/resolve.ts

+11
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,14 @@ export function createResolver(options: Partial<ResolveOptions> = {}): Resolver
1414
...options,
1515
})
1616
}
17+
18+
let _styleResolver!: Resolver
19+
20+
export function createStyleResolver(): Resolver {
21+
_styleResolver ??= createResolver({
22+
extensions: ['.css'],
23+
conditionNames: ['style'],
24+
})
25+
26+
return _styleResolver
27+
}

Diff for: packages/tailwindcss-language-server/tests/completions/completions.test.js

+23
Original file line numberDiff line numberDiff line change
@@ -553,3 +553,26 @@ withFixture('v4/basic', (c) => {
553553
})
554554
})
555555
})
556+
557+
withFixture('v4/workspaces', (c) => {
558+
let completion = buildCompletion(c)
559+
560+
test('@import resolution supports exports.style', async ({ expect }) => {
561+
let result = await completion({
562+
dir: 'packages/web',
563+
lang: 'html',
564+
text: '<div class=""></div>',
565+
position: { line: 0, character: 12 },
566+
})
567+
568+
let item = result.items.find((item) => item.label === 'bg-beet')
569+
570+
let resolved = await c.sendRequest('completionItem/resolve', item)
571+
572+
expect(resolved).toEqual({
573+
...item,
574+
detail: 'background-color: #8e3b46;',
575+
documentation: '#8e3b46',
576+
})
577+
})
578+
})

Diff for: packages/tailwindcss-language-server/tests/fixtures/v4/workspaces/package-lock.json

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@theme {
2+
--color-beet: #8e3b46;
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "@private/style-export",
3+
"exports": {
4+
".": {
5+
"style": "./lib.css"
6+
}
7+
}
8+
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
@import 'tailwindcss';
22
@import '@private/shared/ui.css';
3+
@import '@private/style-export';
4+
35
@theme {
46
--color-potato: #907a70;
57
}

0 commit comments

Comments
 (0)