UNPKG

netlify-cli

Version:

Netlify command line tool

60 lines 2.66 kB
import { rm } from 'node:fs/promises'; import waitPort from 'wait-port'; import { startSpinner, stopSpinner } from '../lib/spinner.js'; import { logAndThrowError, log, NETLIFYDEVERR, NETLIFYDEVLOG } from './command-helpers.js'; import { runCommand } from './shell.js'; import { startStaticServer } from './static-server.js'; // 10 minutes const FRAMEWORK_PORT_TIMEOUT = 6e5; /** * Start a static server if the `useStaticServer` is provided or a framework specific server */ export const startFrameworkServer = async function ({ cwd, settings, }) { if (settings.useStaticServer) { if (settings.command) { runCommand(settings.command, { env: settings.env, cwd }); } const { family } = await startStaticServer({ settings }); return { ipVersion: family === 'IPv6' ? 6 : 4 }; } log(`${NETLIFYDEVLOG} Starting Netlify Dev with ${settings.framework || 'custom config'}`); const spinner = startSpinner({ text: `Waiting for framework port ${settings.frameworkPort}. This can be configured using the 'targetPort' property in the netlify.toml`, }); if (settings.clearPublishDirectory && settings.dist) { await rm(settings.dist, { recursive: true, force: true }); } if (settings.command) { runCommand(settings.command, { env: settings.env, spinner, cwd }); } let port; try { if (settings.skipWaitPort) { // default ip version based on node version const ipVersion = parseInt(process.versions.node.split('.')[0]) >= 18 ? 6 : 4; port = { open: true, ipVersion }; } else { port = await waitPort({ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion port: settings.frameworkPort, host: 'localhost', output: 'silent', timeout: FRAMEWORK_PORT_TIMEOUT, ...(settings.pollingStrategies?.includes('HTTP') && { protocol: 'http' }), }); if (!port.open) { throw new Error(`Timed out waiting for port '${settings.frameworkPort}' to be open`); } } stopSpinner({ error: false, spinner }); } catch (error_) { stopSpinner({ error: true, spinner }); log(NETLIFYDEVERR, `Netlify Dev could not start or connect to localhost:${settings.frameworkPort}.`); log(NETLIFYDEVERR, `Please make sure your framework server is running on port ${settings.frameworkPort}`); return logAndThrowError(error_); } return { ipVersion: port.ipVersion }; }; //# sourceMappingURL=framework-server.js.map