UNPKG

casterly

Version:
66 lines (65 loc) 2.87 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("@casterly/utils"); const cors_1 = __importDefault(require("cors")); const express_1 = __importDefault(require("express")); const webpack_1 = require("webpack"); const webpack_hot_middleware_1 = __importDefault(require("webpack-hot-middleware")); const __1 = require(".."); const createWebpackConfig_1 = __importDefault(require("../config/createWebpackConfig")); const userConfig_1 = __importDefault(require("../config/userConfig")); const logger_1 = require("../output/logger"); const watcher_1 = require("../output/watcher"); async function startWatch() { var _a, _b; process.env.NODE_ENV = 'development'; const webpackConfigFn = userConfig_1.default.loadWebpackConfig(); const app = express_1.default(); app.use(cors_1.default()); let setServerReady = null; const serverReadyPromise = new Promise((resolve) => { setServerReady = resolve; }); async function startWatch() { const clientConfig = await createWebpackConfig_1.default({ dev: true, isServer: false, configFn: webpackConfigFn, }); const serverConfig = await createWebpackConfig_1.default({ dev: true, isServer: true, configFn: webpackConfigFn, }); const multiCompiler = webpack_1.webpack([clientConfig, serverConfig]); const [clientCompiler, serverCompiler] = multiCompiler.compilers; app.use(webpack_hot_middleware_1.default(clientCompiler, { path: '/_casterly/__webpack-hmr', log: false })); const useTypescript = await utils_1.fileExists(__1.paths.appTsConfig); watcher_1.watchCompilers(clientCompiler, serverCompiler, useTypescript); await new Promise((resolve, reject) => { const watcher = multiCompiler.watch([clientConfig.watchOptions, serverConfig.watchOptions], (error) => { if (error) { return reject(error); } resolve(watcher); }); }); setServerReady(); } startWatch(); app.get('/server-ready', (_, res) => { serverReadyPromise.then(() => { res.send('ok'); }); }); const port = process.env.PORT ? parseInt(process.env.PORT, 10) : (_b = undefined !== null && undefined !== void 0 ? undefined : (_a = userConfig_1.default.userConfig.buildServer) === null || _a === void 0 ? void 0 : _a.port) !== null && _b !== void 0 ? _b : userConfig_1.default.defaultConfig.buildServer.port; app.listen(port, () => { logger_1.logStore.setState({ port }); }); } exports.default = startWatch;