Skip to content

Commit a0c670c

Browse files
committed
fix: fonts.css isn't loaded in build mode
1 parent 0f83b9a commit a0c670c

File tree

6 files changed

+678
-651
lines changed

6 files changed

+678
-651
lines changed

adex/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"next": "bumpp"
5656
},
5757
"dependencies": {
58+
"@barelyhuman/tiny-use": "^0.0.2",
5859
"@dumbjs/preland": "^0.0.2",
5960
"bumpp": "^9.4.1",
6061
"dotenv": "^16.4.5",

adex/runtime/server.js

+33-20
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import { dirname, join } from 'node:path'
55
import { fileURLToPath } from 'node:url'
66

77
//@ts-expect-error internal requires
8-
import { mri, sirv } from 'adex/ssr'
8+
import { mri, sirv, useMiddleware } from 'adex/ssr'
99

1010
//@ts-expect-error vite virtual import
1111
import { handler } from 'virtual:adex:handler'
1212

1313
import 'virtual:adex:global.css'
14+
import 'virtual:adex:font.css'
1415

1516
const flags = mri(process.argv.slice(2))
1617

@@ -27,6 +28,7 @@ const serverAssets = sirv(join(__dirname, './assets'), {
2728

2829
let islandsWereGenerated = existsSync(join(__dirname, './islands'))
2930

31+
// @ts-ignore
3032
let islandAssets = (req, res, next) => {
3133
next()
3234
}
@@ -41,6 +43,7 @@ if (islandsWereGenerated) {
4143

4244
let clientWasGenerated = existsSync(join(__dirname, '../client'))
4345

46+
// @ts-ignore
4447
let clientAssets = (req, res, next) => {
4548
next()
4649
}
@@ -163,17 +166,15 @@ function addDependencyAssets(template, pageRoute) {
163166
const manifest = getClientManifest()
164167
const filePath = pageRoute.startsWith('/') ? pageRoute.slice(1) : pageRoute
165168

166-
const { links: serverLinks, scripts: serverScripts } = manifestToHTML(
167-
serverManifest,
168-
filePath
169-
)
169+
const { links: serverLinks } = manifestToHTML(serverManifest, filePath)
170+
170171
const { links: clientLinks, scripts: clientScripts } = manifestToHTML(
171172
manifest,
172173
filePath
173174
)
174175

175176
const links = [...serverLinks, ...clientLinks]
176-
const scripts = [...serverScripts, ...clientScripts]
177+
const scripts = [...clientScripts]
177178

178179
return template.replace(
179180
'</head>',
@@ -182,20 +183,32 @@ function addDependencyAssets(template, pageRoute) {
182183
}
183184

184185
http
185-
.createServer((req, res) => {
186-
const originalUrl = req.url
187-
req.url = originalUrl.replace(/(\/?assets\/?)/, '/')
188-
serverAssets(req, res, () => {
189-
req.url = originalUrl.replace(/(\/?islands\/?)/, '/')
190-
return islandAssets(req, res, () => {
191-
req.url = originalUrl.replace(/(\/?client\/?)/, '/')
192-
return clientAssets(req, res, () => {
193-
req.url = originalUrl
194-
defaultHandler(req, res)
195-
})
196-
})
197-
})
198-
})
186+
.createServer(
187+
useMiddleware(
188+
async (req, res, next) => {
189+
// @ts-expect-error shared-state between the middlewares
190+
req.__originalUrl = req.url
191+
// @ts-expect-error shared-state between the middlewares
192+
req.url = req.__originalUrl.replace(/(\/?assets\/?)/, '/')
193+
return serverAssets(req, res, next)
194+
},
195+
async (req, res, next) => {
196+
// @ts-expect-error shared-state between the middlewares
197+
req.url = req.__originalUrl.replace(/(\/?islands\/?)/, '/')
198+
return islandAssets(req, res, next)
199+
},
200+
async (req, res, next) => {
201+
// @ts-expect-error shared-state between the middlewares
202+
req.url = req.__originalUrl.replace(/(\/?client\/?)/, '/')
203+
return clientAssets(req, res, next)
204+
},
205+
async (req, res) => {
206+
// @ts-expect-error shared-state between the middlewares
207+
req.url = req.__originalUrl
208+
return defaultHandler(req, res)
209+
}
210+
)
211+
)
199212
.listen(PORT, HOST, () => {
200213
console.log(`Listening on ${HOST}:${PORT}`)
201214
})

adex/src/ssr.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export { toStatic } from 'hoofd/preact'
22
export { renderToString } from 'preact-render-to-string'
33
export { parse as pathToRegex } from 'regexparam'
4+
export { use as useMiddleware } from '@barelyhuman/tiny-use'

adex/src/ssr.js

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export { default as sirv } from 'sirv'
33
export { default as mri } from 'mri'
44
export { parse as pathToRegex } from 'regexparam'
55
export { toStatic } from 'hoofd/preact'
6+
export { use as useMiddleware } from '@barelyhuman/tiny-use'

adex/src/vite.js

+7-5
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export function adex({ fonts, islands = false } = {}) {
5555
'virtual:adex:client',
5656
readFileSync(join(__dirname, '../runtime/client.js'), 'utf8')
5757
),
58-
fonts && Object.keys(fonts).length > 0 && addFontsPlugin(fonts),
58+
addFontsPlugin(fonts),
5959
adexServerBuilder({ islands }),
6060
!islands && adexClientBuilder(),
6161
islands && adexIslandsBuilder(),
@@ -345,10 +345,12 @@ function adexServerBuilder({ islands = false } = {}) {
345345
if (!importer) return
346346
const importerFromRoot = importer.replace(resolve(cfg.root), '')
347347
const resolvedCss = await this.resolve(id, importer, meta)
348-
devCSSMap.set(
349-
importerFromRoot,
350-
(devCSSMap.get(importer) ?? []).concat(resolvedCss.id)
351-
)
348+
if (resolvedCss) {
349+
devCSSMap.set(
350+
importerFromRoot,
351+
(devCSSMap.get(importer) ?? []).concat(resolvedCss.id)
352+
)
353+
}
352354
return
353355
}
354356
},

0 commit comments

Comments
 (0)