Skip to content

Commit ee83020

Browse files
vite: Add experimental support for Astro (#796)
Co-authored-by: mattcompiles <[email protected]>
1 parent d115695 commit ee83020

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

.changeset/ten-poets-perform.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@vanilla-extract/vite-plugin': minor
3+
---
4+
5+
Add experimental support for [Astro](https://astro.build/)

packages/vite-plugin/src/index.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import { PostCSSConfigResult, resolvePostcssConfig } from './postcss';
1717
const styleUpdateEvent = (fileId: string) =>
1818
`vanilla-extract-style-update:${fileId}`;
1919

20+
const virtualExtCss = '.vanilla.css';
21+
const virtualExtJs = '.vanilla.js';
22+
2023
interface Options {
2124
identifiers?: IdentifierOption;
2225
esbuildOptions?: CompileOptions['esbuildOptions'];
@@ -30,7 +33,7 @@ export function vanillaExtractPlugin({
3033
let postCssConfig: PostCSSConfigResult | null;
3134
const cssMap = new Map<string, string>();
3235

33-
let virtualExt: string;
36+
let forceEmitCssInSsrBuild: boolean = !!process.env.VITE_RSC_BUILD;
3437
let packageName: string;
3538

3639
const getAbsoluteVirtualFileId = (source: string) =>
@@ -65,11 +68,13 @@ export function vanillaExtractPlugin({
6568
postCssConfig = await resolvePostcssConfig(config);
6669
}
6770

68-
virtualExt = `.vanilla.${config.command === 'serve' ? 'js' : 'css'}`;
71+
if (config.plugins.some((p) => p.name === 'astro:build')) {
72+
forceEmitCssInSsrBuild = true;
73+
}
6974
},
7075
resolveId(source) {
7176
const [validId, query] = source.split('?');
72-
if (!validId.endsWith(virtualExt)) {
77+
if (!validId.endsWith(virtualExtCss) && !validId.endsWith(virtualExtJs)) {
7378
return;
7479
}
7580

@@ -100,7 +105,7 @@ export function vanillaExtractPlugin({
100105
return;
101106
}
102107

103-
if (!server || server.config.isProduction) {
108+
if (validId.endsWith(virtualExtCss)) {
104109
return css;
105110
}
106111

@@ -136,7 +141,7 @@ export function vanillaExtractPlugin({
136141
ssr = ssrParam?.ssr;
137142
}
138143

139-
if (ssr && !process.env.VITE_RSC_BUILD) {
144+
if (ssr && !forceEmitCssInSsrBuild) {
140145
return addFileScope({
141146
source: code,
142147
filePath: normalizePath(validId),
@@ -165,7 +170,11 @@ export function vanillaExtractPlugin({
165170
identOption:
166171
identifiers ?? (config.mode === 'production' ? 'short' : 'debug'),
167172
serializeVirtualCssPath: async ({ fileScope, source }) => {
168-
const rootRelativeId = `${fileScope.filePath}${virtualExt}`;
173+
const rootRelativeId = `${fileScope.filePath}${
174+
config.command === 'build' || (ssr && forceEmitCssInSsrBuild)
175+
? virtualExtCss
176+
: virtualExtJs
177+
}`;
169178
const absoluteId = getAbsoluteVirtualFileId(rootRelativeId);
170179

171180
let cssSource = source;

0 commit comments

Comments
 (0)