fix(serve): respect base config in serve mode (#470)

Fixes #416

Signed-off-by: Gordon Smith <GordonJSmith@gmail.com>
pull/486/head
Gordon Smith 3 years ago committed by GitHub
parent 444562c3a7
commit 08a0b12992
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -3,6 +3,18 @@ import compression from 'compression'
import { resolveConfig } from '../config'
import polka from 'polka'
function trimChar(str: string, char: string) {
while (str.charAt(0) === char) {
str = str.substring(1)
}
while (str.charAt(str.length - 1) === char) {
str = str.substring(0, str.length - 1)
}
return str
}
export interface ServeOptions {
root?: string
port?: number
@ -11,6 +23,7 @@ export interface ServeOptions {
export async function serve(options: ServeOptions = {}) {
const port = options.port !== undefined ? options.port : 5000
const site = await resolveConfig(options.root, 'serve', 'production')
const base = trimChar(site?.site?.base ?? "", "/")
const compress = compression()
const serve = sirv(site.outDir, {
@ -27,10 +40,19 @@ export async function serve(options: ServeOptions = {}) {
}
})
polka()
.use(compress, serve)
.listen(port, (err: any) => {
if (err) throw err
console.log(`Built site served at http://localhost:${port}/\n`)
})
if (base) {
polka()
.use(base, compress, serve)
.listen(port, (err: any) => {
if (err) throw err
console.log(`Built site served at http://localhost:${port}/${base}/\n`)
})
} else {
polka()
.use(compress, serve)
.listen(port, (err: any) => {
if (err) throw err
console.log(`Built site served at http://localhost:${port}/\n`)
})
}
}

Loading…
Cancel
Save