From b64e25a17766781b0950ddd0f9de6a7485641755 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 4 Mar 2018 21:28:31 -0500 Subject: [PATCH] add sapper start task --- src/cli/index.ts | 84 +++++++++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 29 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index dc8c51f..a93f017 100755 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1,3 +1,5 @@ +import * as path from 'path'; +import * as child_process from 'child_process'; import mri from 'mri'; import chalk from 'chalk'; import help from './help.md'; @@ -28,36 +30,60 @@ const [cmd] = opts._; const start = Date.now(); -if (cmd === 'build') { - process.env.NODE_ENV = 'production'; - process.env.SAPPER_DEST = opts._[1] || 'build'; +switch (cmd) { + case 'build': + process.env.NODE_ENV = 'production'; + process.env.SAPPER_DEST = opts._[1] || 'build'; - build() - .then(() => { - const elapsed = Date.now() - start; - console.error(`built in ${elapsed}ms`); // TODO beautify this, e.g. 'built in 4.7 seconds' - }) - .catch(err => { - console.error(err ? err.details || err.stack || err.message || err : 'Unknown error'); + build() + .then(() => { + const elapsed = Date.now() - start; + console.error(`built in ${elapsed}ms`); // TODO beautify this, e.g. 'built in 4.7 seconds' + }) + .catch(err => { + console.error(err ? err.details || err.stack || err.message || err : 'Unknown error'); + }); + + break; + + case 'export': + process.env.NODE_ENV = 'production'; + + const export_dir = opts._[1] || 'export'; + + build() + .then(() => exporter(export_dir)) + .then(() => { + const elapsed = Date.now() - start; + console.error(`extracted in ${elapsed}ms`); // TODO beautify this, e.g. 'built in 4.7 seconds' + }) + .catch(err => { + console.error(err ? err.details || err.stack || err.message || err : 'Unknown error'); + }); + + break; + + case 'dev': + dev(); + break; + + case 'upgrade': + upgrade(); + break; + + case 'start': + const dir = path.resolve(opts._[1] || 'build'); + + child_process.fork(`${dir}/server.js`, [], { + cwd: process.cwd(), + env: Object.assign({ + NODE_ENV: 'production', + SAPPER_DEST: dir + }, process.env) }); -} else if (cmd === 'export') { - process.env.NODE_ENV = 'production'; - const export_dir = opts._[1] || 'export'; + break; - build() - .then(() => exporter(export_dir)) - .then(() => { - const elapsed = Date.now() - start; - console.error(`extracted in ${elapsed}ms`); // TODO beautify this, e.g. 'built in 4.7 seconds' - }) - .catch(err => { - console.error(err ? err.details || err.stack || err.message || err : 'Unknown error'); - }); -} else if (cmd === 'dev') { - dev(); -} else if (cmd === 'upgrade') { - upgrade(); -} else { - console.log(`unrecognized command ${cmd} — try \`sapper --help\` for more information`); -} + default: + console.log(`unrecognized command ${cmd} — try \`sapper --help\` for more information`); +} \ No newline at end of file