mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-12 23:33:43 +08:00
49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { spawn } from 'node:child_process';
|
|
|
|
const mode = process.argv[2];
|
|
const forwardedArgs = process.argv.slice(3);
|
|
const validModes = new Set(['dev', 'start']);
|
|
|
|
if (!validModes.has(mode)) {
|
|
console.error('Usage: node scripts/next-with-lan-access.mjs <dev|start> [next args...]');
|
|
process.exit(1);
|
|
}
|
|
|
|
function isTruthyEnv(value) {
|
|
if (!value) {
|
|
return false;
|
|
}
|
|
|
|
return ['1', 'true', 'yes', 'y', 'on', 'enabled', 'enable'].includes(
|
|
value.trim().toLowerCase()
|
|
);
|
|
}
|
|
|
|
const lanAccessEnabled = isTruthyEnv(
|
|
process.env.ALLOW_LAN_ACCESS ?? process.env.NEXT_PUBLIC_ALLOW_LAN_ACCESS
|
|
);
|
|
const hostname = process.env.HOSTNAME || process.env.NEXT_HOSTNAME || (lanAccessEnabled ? '0.0.0.0' : 'localhost');
|
|
const args = [mode, '--port', process.env.PORT || '3000'];
|
|
|
|
if (hostname) {
|
|
args.push('--hostname', hostname);
|
|
}
|
|
|
|
args.push(...forwardedArgs);
|
|
|
|
const child = spawn('next', args, {
|
|
stdio: 'inherit',
|
|
shell: process.platform === 'win32',
|
|
});
|
|
|
|
child.on('exit', (code, signal) => {
|
|
if (signal) {
|
|
process.kill(process.pid, signal);
|
|
return;
|
|
}
|
|
|
|
process.exit(code ?? 0);
|
|
});
|