mirror of
https://github.com/plebbit/seedit.git
synced 2026-06-11 01:25:48 -04:00
68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
import { spawn } from 'node:child_process';
|
|
import {
|
|
ensurePortlessProxy,
|
|
fallbackHost,
|
|
fallbackUrlHost,
|
|
forwardChildExit,
|
|
getLocalServerCommand,
|
|
getPortlessAppName,
|
|
openInBrowser,
|
|
portlessBin,
|
|
portlessEnv,
|
|
waitForUrlReady,
|
|
} from './local-server-utils.mjs';
|
|
import { resolvePort } from './dev-server-utils.mjs';
|
|
|
|
const fallbackRequestedPort = Number(process.env.PORT) || 3000;
|
|
|
|
console.log('Note: yarn start runs Vite/React in development mode. Use yarn start:preview for production-like local performance checks.');
|
|
|
|
const command = getLocalServerCommand();
|
|
let args;
|
|
let publicUrl = null;
|
|
|
|
if (command === portlessBin) {
|
|
ensurePortlessProxy();
|
|
const appName = getPortlessAppName();
|
|
|
|
publicUrl = `https://${appName}.localhost`;
|
|
args = [appName, 'vite'];
|
|
|
|
if (appName !== 'seedit') {
|
|
console.log(`Starting Portless dev server at ${publicUrl}`);
|
|
}
|
|
} else {
|
|
const port = await resolvePort(fallbackRequestedPort, fallbackHost);
|
|
const fallbackUrl = `http://${fallbackUrlHost}:${port}`;
|
|
|
|
args = ['--host', fallbackHost, '--port', String(port), '--strictPort'];
|
|
|
|
if (command !== portlessBin && process.env.PORTLESS !== '0') {
|
|
console.warn(`portless unavailable on this platform, using vite directly on ${fallbackUrl}`);
|
|
} else {
|
|
console.log(`Starting Vite directly at ${fallbackUrl}`);
|
|
}
|
|
|
|
if (port !== fallbackRequestedPort) {
|
|
console.log(`Preferred port ${fallbackRequestedPort} is busy, so this run will use ${fallbackUrl}.`);
|
|
}
|
|
}
|
|
|
|
const child = spawn(command, args, {
|
|
stdio: 'inherit',
|
|
env: command === portlessBin ? portlessEnv : process.env,
|
|
});
|
|
|
|
if (publicUrl && process.env.BROWSER !== 'none') {
|
|
waitForUrlReady(publicUrl, 30_000)
|
|
.then(() => {
|
|
console.log(`Opening ${publicUrl} in browser...`);
|
|
openInBrowser(publicUrl);
|
|
})
|
|
.catch((error) => {
|
|
console.warn(`Could not auto-open ${publicUrl}: ${error.message}`);
|
|
});
|
|
}
|
|
|
|
forwardChildExit(child);
|