Skip to content

Commit

Permalink
feat(css): support resolving stylesheets from exports map (#7817)
Browse files Browse the repository at this point in the history
Co-authored-by: bluwy <bjornlu.dev@gmail.com>
  • Loading branch information
kherock and bluwy committed Mar 7, 2023
1 parent ce18eba commit 108aadf
Show file tree
Hide file tree
Showing 11 changed files with 45 additions and 0 deletions.
3 changes: 3 additions & 0 deletions packages/vite/src/node/plugins/css.ts
Original file line number Diff line number Diff line change
Expand Up @@ -731,6 +731,7 @@ function createCSSResolvers(config: ResolvedConfig): CSSAtImportResolvers {
(cssResolve = config.createResolver({
extensions: ['.css'],
mainFields: ['style'],
conditions: ['style'],
tryIndex: false,
preferRelative: true,
}))
Expand All @@ -743,6 +744,7 @@ function createCSSResolvers(config: ResolvedConfig): CSSAtImportResolvers {
(sassResolve = config.createResolver({
extensions: ['.scss', '.sass', '.css'],
mainFields: ['sass', 'style'],
conditions: ['sass', 'style'],
tryIndex: true,
tryPrefix: '_',
preferRelative: true,
Expand All @@ -756,6 +758,7 @@ function createCSSResolvers(config: ResolvedConfig): CSSAtImportResolvers {
(lessResolve = config.createResolver({
extensions: ['.less', '.css'],
mainFields: ['less', 'style'],
conditions: ['less', 'style'],
tryIndex: false,
preferRelative: true,
}))
Expand Down
8 changes: 8 additions & 0 deletions playground/css/__tests__/css.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,14 @@ test('@import dependency w/ sass entry', async () => {
expect(await getColor('.css-dep-sass')).toBe('orange')
})

test('@import dependency w/ style export mapping', async () => {
expect(await getColor('.css-dep-exports')).toBe('purple')
})

test('@import dependency w/ sass export mapping', async () => {
expect(await getColor('.css-dep-exports-sass')).toBe('orange')
})

test('@import dependency w/out package scss', async () => {
expect(await getColor('.sass-dep')).toBe('lavender')
})
Expand Down
1 change: 1 addition & 0 deletions playground/css/css-dep-exports/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
throw new Error('should not be imported')
12 changes: 12 additions & 0 deletions playground/css/css-dep-exports/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "@vitejs/test-css-dep-exports",
"private": true,
"version": "1.0.0",
"exports": {
".": {
"sass": "./style.scss",
"style": "./style.css",
"import": "./index.js"
}
}
}
3 changes: 3 additions & 0 deletions playground/css/css-dep-exports/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.css-dep-exports {
color: purple;
}
3 changes: 3 additions & 0 deletions playground/css/css-dep-exports/style.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.css-dep-exports-sass {
color: orange;
}
1 change: 1 addition & 0 deletions playground/css/dep.css
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
@import '@vitejs/test-css-dep';
@import '@vitejs/test-css-dep-exports';
7 changes: 7 additions & 0 deletions playground/css/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,13 @@ <h1>CSS</h1>
@import dependency w/ sass entrypoints: this should be orange
</p>

<p class="css-dep-exports">
@import dependency w/ style export mapping: this should be purple
</p>
<p class="css-dep-exports-sass">
@import dependency w/ sass export mapping: this should be orange
</p>

<p class="dir-dep">PostCSS dir-dependency: this should be grey</p>
<p class="dir-dep-2">
PostCSS dir-dependency (file 2): this should be grey too
Expand Down
1 change: 1 addition & 0 deletions playground/css/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
},
"devDependencies": {
"@vitejs/test-css-dep": "link:./css-dep",
"@vitejs/test-css-dep-exports": "link:./css-dep-exports",
"@vitejs/test-css-js-dep": "file:./css-js-dep",
"fast-glob": "^3.2.12",
"less": "^4.1.3",
Expand Down
1 change: 1 addition & 0 deletions playground/css/sass.scss
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
@import '=/nested'; // alias + custom index resolving -> /nested/_index.scss
@import '=/nested/partial'; // sass convention: omitting leading _ for partials
@import '@vitejs/test-css-dep'; // package w/ sass entry points
@import '@vitejs/test-css-dep-exports'; // package with a sass export mapping
@import 'virtual-dep'; // virtual file added through importer
@import '=/pkg-dep'; // package w/out sass field
@import '=/weapp.wxss'; // wxss file
Expand Down
5 changes: 5 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 108aadf

Please sign in to comment.