Skip to content

Commit 39e9768

Browse files
authored
Merge pull request #1785 from maizzle/feat/server-host
feat(server): allow exposing dev server on network via config
2 parents ea722bc + 4c226ee commit 39e9768

3 files changed

Lines changed: 38 additions & 1 deletion

File tree

src/serve.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export async function serve(options: ServeOptions = {}) {
8080

8181
let config = await resolveConfig(options.config)
8282
const port = options.port ?? config.server?.port ?? 3000
83+
const host = options.host ?? config.server?.host
8384

8485
// Create a renderer for SSR rendering email templates (with dts for dev)
8586
let renderer = await createRenderer({ dts: true, markdown: config.markdown, root: config.root, componentDirs: normalizeComponentSources(config.components?.source, process.cwd()), vite: config.vite })
@@ -132,7 +133,7 @@ export async function serve(options: ServeOptions = {}) {
132133
},
133134
server: {
134135
port,
135-
host: options.host,
136+
host,
136137
fs: {
137138
allow: [process.cwd(), config.root ?? process.cwd(), devUIDir, ...['vue', 'vue-router', 'reka-ui', '@vueuse/core', '@vueuse/shared', '@lucide/vue', 'class-variance-authority', 'clsx', 'tailwind-merge', 'culori'].map(pkg)],
138139
},

src/tests/serve.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,27 @@ describe('serve dev server', () => {
131131
}, { timeout: 15000, interval: 100 })
132132
}, 30000)
133133

134+
it('prefers options.host over config.server.host', async () => {
135+
server = await serve({
136+
host: '127.0.0.1',
137+
config: { server: { host: '0.0.0.0' } },
138+
port: 3157,
139+
silent: true,
140+
})
141+
142+
expect(server.config.server.host).toBe('127.0.0.1')
143+
}, 30000)
144+
145+
it('falls back to config.server.host when options.host is undefined', async () => {
146+
server = await serve({
147+
config: { server: { host: '127.0.0.1' } },
148+
port: 3157,
149+
silent: true,
150+
})
151+
152+
expect(server.config.server.host).toBe('127.0.0.1')
153+
}, 30000)
154+
134155
it('fires beforeRender/afterRender/afterTransform when rendering a template', async () => {
135156
writeFileSync(join(tempDir, 'maizzle.config.js'), `
136157
export default {

src/types/config.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,21 @@ export interface MaizzleConfig {
603603
* @default 3000
604604
*/
605605
port?: number
606+
/**
607+
* Expose the dev server on the network.
608+
*
609+
* Set to `true` to listen on all interfaces (prints a network URL +
610+
* QR code), or pass a string to bind a specific address. The
611+
* `--host` CLI flag takes precedence over this.
612+
*
613+
* @default false
614+
*
615+
* @example
616+
* server: {
617+
* host: true,
618+
* }
619+
*/
620+
host?: boolean | string
606621
/**
607622
* Additional file paths to watch for changes.
608623
*

0 commit comments

Comments
 (0)