#!/usr/bin/env node import { exec } from 'child_process' import { resolve, join } from 'path' import parseArgs from 'minimist' import { exists } from 'mz/fs' import Server from '../server' import clean from '../server/build/clean' const argv = parseArgs(process.argv.slice(2), { alias: { h: 'help', p: 'port' }, boolean: ['h'], default: { p: 3000 } }) const open = url => { const openers = { darwin: 'open', win32: 'start' } const cmdName = openers[process.platform] || 'xdg-open' exec(`${cmdName} ${url}`) } const dir = resolve(argv._[0] || '.') clean(dir) .then(async () => { const srv = new Server({ dir, dev: true, hotReload: true }) await srv.start(argv.port) console.log('> Ready on http://localhost:%d', argv.port) // Check if pages dir exists and warn if not if (!(await exists(join(dir, 'pages')))) { if (await exists(join(dir, '..', 'pages'))) { console.warn('> No `pages` directory found. Did you mean to run `next` in the parent (`../`) directory?') } else { console.warn('> Couldn\'t find a `pages` directory. Please create one under the project root') } } if (!/^(false|0)$/i.test(process.env.NEXT_OPEN_BROWSER)) { open(`http://localhost:${argv.port}`) } }) .catch((err) => { console.error(err) exit(1) })