1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00
next.js/bin/next-export
Lukasz Ostrowski 6e5bab1a1d Ensured process exits after static export (#4747) (#4749)
Fixes [this issue](https://github.com/zeit/next.js/issues/4747)

I don't know what is the reason why the process does not finish, because it can be reproduced in this repo in many environments (my local mac os and Netlify pipeline).

However, it fixes the problem and it's 100% safe.
2018-07-17 17:11:19 +02:00

67 lines
1.5 KiB
JavaScript
Executable file

#!/usr/bin/env node
import { resolve, join } from 'path'
import { existsSync } from 'fs'
import parseArgs from 'minimist'
import exportApp from '../server/export'
import { printAndExit } from '../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] <dir>
<dir> 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,
outdir: argv.outdir ? resolve(argv.outdir) : resolve(dir, 'out')
}
exportApp(dir, options)
.then(() => {
printAndExit('Export successful', 0)
})
.catch((err) => {
printAndExit(err)
})