#!/usr/bin/env node import { resolve, join } from 'path' import { existsSync } from 'fs' import parseArgs from 'minimist' import exportApp from '../export' import { printAndExit } from '../server/lib/utils' const argv = parseArgs(process.argv.slice(2), { alias: { h: 'help', s: 'silent', o: 'outdir' }, boolean: ['h'], default: { s: false, o: null } }) if (argv.help) { console.log(` Description Exports the application for production deployment Usage $ next export [options] represents where the compiled dist folder should go. If no directory is provided, the 'out' folder will be created in the current directory. Options -h - list this help -o - set the output dir (defaults to 'out') -s - do not print any messages to console `) process.exit(0) } const dir = resolve(argv._[0] || '.') // Check if pages dir exists and warn if not if (!existsSync(dir)) { printAndExit(`> No such directory exists as the project root: ${dir}`) } if (!existsSync(join(dir, 'pages'))) { if (existsSync(join(dir, '..', 'pages'))) { printAndExit('> No `pages` directory found. Did you mean to run `next` in the parent (`../`) directory?') } printAndExit('> Couldn\'t find a `pages` directory. Please create one under the project root') } const options = { silent: argv.silent, threads: argv.threads, concurrency: argv.concurrency, outdir: argv.outdir ? resolve(argv.outdir) : resolve(dir, 'out') } exportApp(dir, options) .then(() => { printAndExit('Export successful', 0) }) .catch((err) => { printAndExit(err) })