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