firejsx
Version:
The React Framework for SSB, SSR and Serverless technologies
73 lines (72 loc) • 2.75 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const ConfigMapper_1 = require("./ConfigMapper");
const ArgsMapper_1 = require("./ArgsMapper");
const MemoryFS = require("memory-fs");
const SSB_1 = require("../SSB");
const Cli_1 = require("../utils/Cli");
const Server_1 = require("../Server");
const args = ArgsMapper_1.parseArgs(ArgsMapper_1.getArgs());
const cli = new Cli_1.default(args["--log-mode"]);
(async function main() {
const config = ConfigMapper_1.parseConfig((() => {
const [path, config] = ConfigMapper_1.getUserConfig(args["--conf"]);
cli.ok(`Using ${path} config`);
return config || {};
})(), args, cli);
if (args["--disable-plugins"])
config.plugins = [];
const app = new SSB_1.default({
outDir: config.outDir,
cacheDir: config.cacheDir,
prefix: config.prefix,
pages: config.pages,
plugins: config.plugins,
lib: config.lib,
custom: config.custom,
cli,
args,
staticDir: config.staticDir,
pro: !!args["--pro"],
ssr: !!args["--ssr"],
watch: !(args["--export"] || args["--export-fly"]),
staticPrefix: config.staticPrefix,
verbose: !!args["--verbose"],
outputFileSystem: (args["--disk"] || args["--export-fly"] || args["--export"]) ? undefined : new MemoryFS(),
appPath: config.app
});
//log
cli.ok("ENV :", process.env.NODE_ENV);
cli.ok("SSR :", app.$.ssr);
cli.ok("HMR :", !app.$.pageArchitect.webpackArchitect.proOrSSR);
cli.ok("Watch :", app.$.watch);
// initialize
await app.init();
// switch according tio modes
if (args["--export"]) {
const startTime = new Date().getTime();
cli.ok("Exporting");
await app.export();
cli.ok("Exported to", config.outDir);
cli.ok("Finished in", (new Date().getTime() - startTime) / 1000 + "s");
if (config.staticDir)
cli.warn("Don't forget to copy the static folder");
}
else if (args["--export-fly"]) {
const startTime = new Date().getTime();
cli.ok("Exporting for on the fly rendering");
//warn user
if (!app.$.pro)
cli.warn("Exporting a development build");
if (!app.$.ssr)
cli.warn("Exported build won't be able to render your app. Only a html skeleton will be produced.");
//export
await app.exportFly();
cli.ok("Exported to", config.outDir);
cli.ok("Finished in", (new Date().getTime() - startTime) / 1000 + "s");
}
else
return void new Server_1.default(app).init(args["--port"], args["--addr"], config.devServer);
app.destruct();
})();
;