feat: support configurable ws port and remote development (#429)
Co-authored-by: Jeremy Press <jeremy@replit.com> Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
This commit is contained in:
parent
78eb93eb85
commit
ef762f28cd
2
.gitignore
vendored
2
.gitignore
vendored
@ -7,3 +7,5 @@ tsconfig.tsbuildinfo
|
|||||||
.obsidian
|
.obsidian
|
||||||
.quartz-cache
|
.quartz-cache
|
||||||
private/
|
private/
|
||||||
|
.replit
|
||||||
|
replit.nix
|
||||||
|
@ -76,6 +76,16 @@ export const BuildArgv = {
|
|||||||
default: 8080,
|
default: 8080,
|
||||||
describe: "port to serve Quartz on",
|
describe: "port to serve Quartz on",
|
||||||
},
|
},
|
||||||
|
wsPort: {
|
||||||
|
number: true,
|
||||||
|
default: 3001,
|
||||||
|
describe: "port to use for WebSocket-based hot-reload notifications",
|
||||||
|
},
|
||||||
|
remoteDevHost: {
|
||||||
|
string: true,
|
||||||
|
default: "",
|
||||||
|
describe: "A URL override for the websocket connection if you are not developing on localhost",
|
||||||
|
},
|
||||||
bundleInfo: {
|
bundleInfo: {
|
||||||
boolean: true,
|
boolean: true,
|
||||||
default: false,
|
default: false,
|
||||||
|
@ -402,7 +402,7 @@ export async function handleBuild(argv) {
|
|||||||
return serve()
|
return serve()
|
||||||
})
|
})
|
||||||
server.listen(argv.port)
|
server.listen(argv.port)
|
||||||
const wss = new WebSocketServer({ port: 3001 })
|
const wss = new WebSocketServer({ port: argv.wsPort })
|
||||||
wss.on("connection", (ws) => connections.push(ws))
|
wss.on("connection", (ws) => connections.push(ws))
|
||||||
console.log(
|
console.log(
|
||||||
chalk.cyan(
|
chalk.cyan(
|
||||||
|
@ -107,12 +107,18 @@ function addGlobalPageResources(
|
|||||||
document.dispatchEvent(event)`)
|
document.dispatchEvent(event)`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let wsUrl = `ws://localhost:${ctx.argv.wsPort}`
|
||||||
|
|
||||||
|
if (ctx.argv.remoteDevHost) {
|
||||||
|
wsUrl = `wss://${ctx.argv.remoteDevHost}:${ctx.argv.wsPort}`
|
||||||
|
}
|
||||||
|
|
||||||
if (reloadScript) {
|
if (reloadScript) {
|
||||||
staticResources.js.push({
|
staticResources.js.push({
|
||||||
loadTime: "afterDOMReady",
|
loadTime: "afterDOMReady",
|
||||||
contentType: "inline",
|
contentType: "inline",
|
||||||
script: `
|
script: `
|
||||||
const socket = new WebSocket('ws://localhost:3001')
|
const socket = new WebSocket('${wsUrl}'')
|
||||||
socket.addEventListener('message', () => document.location.reload())
|
socket.addEventListener('message', () => document.location.reload())
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
|
@ -7,6 +7,8 @@ export interface Argv {
|
|||||||
output: string
|
output: string
|
||||||
serve: boolean
|
serve: boolean
|
||||||
port: number
|
port: number
|
||||||
|
wsPort: number
|
||||||
|
remoteDevHost?: string
|
||||||
concurrency?: number
|
concurrency?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user