@@ -8,7 +8,11 @@ import { bgGreen, bgMagenta, black, green } from 'kleur/colors';
8
8
import * as vite from 'vite' ;
9
9
import type { RouteData } from '../../@types/astro.js' ;
10
10
import { PROPAGATED_ASSET_FLAG } from '../../content/consts.js' ;
11
- import { hasAnyContentFlag } from '../../content/utils.js' ;
11
+ import {
12
+ getSymlinkedContentCollections ,
13
+ hasAnyContentFlag ,
14
+ reverseSymlink ,
15
+ } from '../../content/utils.js' ;
12
16
import {
13
17
type BuildInternals ,
14
18
createBuildInternals ,
@@ -36,9 +40,10 @@ import { RESOLVED_SPLIT_MODULE_ID, RESOLVED_SSR_VIRTUAL_MODULE_ID } from './plug
36
40
import { ASTRO_PAGE_EXTENSION_POST_PATTERN } from './plugins/util.js' ;
37
41
import type { StaticBuildOptions } from './types.js' ;
38
42
import { encodeName , getTimeStat , viteBuildReturnToRollupOutputs } from './util.js' ;
43
+ import type { Logger } from '../logger/core.js' ;
39
44
40
45
export async function viteBuild ( opts : StaticBuildOptions ) {
41
- const { allPages, settings } = opts ;
46
+ const { allPages, settings, logger } = opts ;
42
47
// Make sure we have an adapter before building
43
48
if ( isModeServerWithNoAdapter ( opts . settings ) ) {
44
49
throw new AstroError ( AstroErrorData . NoAdapterInstalled ) ;
@@ -78,7 +83,7 @@ export async function viteBuild(opts: StaticBuildOptions) {
78
83
// Build your project (SSR application code, assets, client JS, etc.)
79
84
const ssrTime = performance . now ( ) ;
80
85
opts . logger . info ( 'build' , `Building ${ settings . config . output } entrypoints...` ) ;
81
- const ssrOutput = await ssrBuild ( opts , internals , pageInput , container ) ;
86
+ const ssrOutput = await ssrBuild ( opts , internals , pageInput , container , logger ) ;
82
87
opts . logger . info ( 'build' , green ( `✓ Completed in ${ getTimeStat ( ssrTime , performance . now ( ) ) } .` ) ) ;
83
88
84
89
settings . timer . end ( 'SSR build' ) ;
@@ -166,7 +171,8 @@ async function ssrBuild(
166
171
opts : StaticBuildOptions ,
167
172
internals : BuildInternals ,
168
173
input : Set < string > ,
169
- container : AstroBuildPluginContainer
174
+ container : AstroBuildPluginContainer ,
175
+ logger : Logger
170
176
) {
171
177
const buildID = Date . now ( ) . toString ( ) ;
172
178
const { allPages, settings, viteConfig } = opts ;
@@ -175,7 +181,8 @@ async function ssrBuild(
175
181
const routes = Object . values ( allPages ) . flatMap ( ( pageData ) => pageData . route ) ;
176
182
const isContentCache = ! ssr && settings . config . experimental . contentCollectionCache ;
177
183
const { lastVitePlugins, vitePlugins } = await container . runBeforeHook ( 'server' , input ) ;
178
-
184
+ const contentDir = new URL ( './src/content' , settings . config . root ) ;
185
+ const symlinks = await getSymlinkedContentCollections ( { contentDir, logger, fs } ) ;
179
186
const viteBuildConfig : vite . InlineConfig = {
180
187
...viteConfig ,
181
188
mode : viteConfig . mode || 'production' ,
@@ -251,7 +258,12 @@ async function ssrBuild(
251
258
chunkInfo . facadeModuleId &&
252
259
hasAnyContentFlag ( chunkInfo . facadeModuleId )
253
260
) {
254
- const [ srcRelative , flag ] = chunkInfo . facadeModuleId . split ( '/src/' ) [ 1 ] . split ( '?' ) ;
261
+ const moduleId = reverseSymlink ( {
262
+ symlinks,
263
+ entry : chunkInfo . facadeModuleId ,
264
+ contentDir,
265
+ } ) ;
266
+ const [ srcRelative , flag ] = moduleId . split ( '/src/' ) [ 1 ] . split ( '?' ) ;
255
267
if ( flag === PROPAGATED_ASSET_FLAG ) {
256
268
return encodeName ( `${ removeFileExtension ( srcRelative ) } .entry.mjs` ) ;
257
269
}
0 commit comments