fusion-cli/commands/start.js (31 lines of code) (raw):

/** Copyright (c) 2018 Uber Technologies, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ /* eslint-env node */ const fs = require('fs'); const path = require('path'); const cp = require('child_process'); exports.run = async function({dir = '.', environment, port, debug} /*: any */) { if (debug && !process.env.__FUSION_DEBUGGING__) { const command = process.argv.shift(); const args = process.argv; args.unshift('--inspect-brk'); return cp.spawn(command, args, { stdio: 'inherit', env: { ...process.env, __FUSION_DEBUGGING__: true, }, }); } const getEntry = env => { const entryPath = `.fusion/dist/${env}/server/server-main.js`; return path.resolve(dir, entryPath); }; const env = environment ? fs.existsSync(getEntry(environment)) && environment : ['development', 'production'].find(e => fs.existsSync(getEntry(e))); if (env) { const entry = getEntry(env); // $FlowFixMe const {start} = require(entry); return start({dir, port: port || process.env.PORT_HTTP || 3000}); // handle server bootstrap errors (e.g. port already in use) } else { throw new Error(`App can't start. JS isn't compiled`); // handle compilation errors } };