@@ -4,7 +4,7 @@ import { readFileSync } from 'fs';
44import { mergeAndConcat } from 'merge-anything' ;
55import { createRequire } from 'module' ;
66import solidRefresh from 'solid-refresh/babel' ;
7- import { createFilter } from 'vite' ;
7+ import { createFilter , version } from 'vite' ;
88import type { Alias , AliasOptions , Plugin , FilterPattern } from 'vite' ;
99import { crawlFrameworkPkgs } from 'vitefu' ;
1010
@@ -14,6 +14,8 @@ const runtimePublicPath = '/@solid-refresh';
1414const runtimeFilePath = require . resolve ( 'solid-refresh/dist/solid-refresh.mjs' ) ;
1515const runtimeCode = readFileSync ( runtimeFilePath , 'utf-8' ) ;
1616
17+ const isVite6 = version . startsWith ( '6.' ) ;
18+
1719/** Possible options for the extensions property */
1820export interface ExtensionOptions {
1921 typescript ?: boolean ;
@@ -236,11 +238,13 @@ export default function solidPlugin(options: Partial<Options> = {}): Plugin {
236238 */
237239 // esbuild: { include: /\.ts$/ },
238240 resolve : {
239- conditions : [
240- 'solid' ,
241- ...( replaceDev ? [ 'development' ] : [ ] ) ,
242- ...( userConfig . mode === 'test' && ! options . ssr ? [ 'browser' ] : [ ] ) ,
243- ] ,
241+ conditions : isVite6
242+ ? undefined
243+ : [
244+ 'solid' ,
245+ ...( replaceDev ? [ 'development' ] : [ ] ) ,
246+ ...( userConfig . mode === 'test' && ! options . ssr ? [ 'browser' ] : [ ] ) ,
247+ ] ,
244248 dedupe : nestedDeps ,
245249 alias : [ { find : / ^ s o l i d - r e f r e s h $ / , replacement : runtimePublicPath } ] ,
246250 } ,
@@ -253,6 +257,22 @@ export default function solidPlugin(options: Partial<Options> = {}): Plugin {
253257 } ;
254258 } ,
255259
260+ // @ts -ignore This hook only works in Vite 6
261+ async configEnvironment ( name , config , opts ) {
262+ config . resolve ??= { } ;
263+ // Emulate Vite default fallback for `resolve.conditions` if not set
264+ if ( config . resolve . conditions == null ) {
265+ // @ts -ignore These exports only exist in Vite 6
266+ const { defaultClientConditions, defaultServerConditions } = await import ( 'vite' ) ;
267+ if ( config . consumer === 'client' || name === 'client' || opts . isSsrTargetWebworker ) {
268+ config . resolve . conditions = [ ...defaultClientConditions ] ;
269+ } else {
270+ config . resolve . conditions = [ ...defaultServerConditions ] ;
271+ }
272+ }
273+ config . resolve . conditions . push ( 'solid' ) ;
274+ } ,
275+
256276 configResolved ( config ) {
257277 needHmr = config . command === 'serve' && config . mode !== 'production' && options . hot !== false ;
258278 } ,
0 commit comments