UNPKG

server-renderer

Version:

library of server side render for React

81 lines (80 loc) 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const webpack_1 = tslib_1.__importDefault(require("webpack")); const chalk_1 = tslib_1.__importDefault(require("chalk")); const path_1 = tslib_1.__importDefault(require("path")); const fs_1 = tslib_1.__importDefault(require("fs")); const FileSizeReporter_1 = tslib_1.__importDefault(require("react-dev-utils/FileSizeReporter")); const webpack_config_1 = require("../config/webpack-config"); const config_1 = require("../config/config"); const utils_1 = require("./utils"); process.env.NODE_ENV = 'production'; const config = config_1.getConfig(); function runCompile(webpackConfig, isClient = false) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return new Promise(((resolve, reject) => { webpack_1.default(webpackConfig).run(((err, stats) => { if (err) { utils_1.logError(err.message + '\n'); console.log(err + '\n'); reject(); return; } const { warnings, errors } = stats.toJson(); if (warnings.length) { console.log(chalk_1.default.yellowBright('Compiled with warnings')); warnings.forEach(warning => { console.log(chalk_1.default.yellowBright(warning)); }); } if (errors.length) { utils_1.logError('Compiled with errors'); errors.forEach(utils_1.logError); reject(); return; } if (isClient) { utils_1.logSuccess('File sizes after gzip:\n'); FileSizeReporter_1.default.printFileSizesAfterBuild(stats, { root: path_1.default.join(config.distDir, 'client'), sizes: {}, }, path_1.default.join(config.distDir, 'client'), 300); console.log('\n'); } resolve(); })); })); }); } function build() { var _a, _b; return tslib_1.__awaiter(this, void 0, void 0, function* () { try { utils_1.logSuccess('Start compile...'); const clientConfig = webpack_config_1.createWebpackConfig(false); const serverConfig = webpack_config_1.createWebpackConfig(true); // clear output directory and copy static files const serverOutput = (_a = serverConfig.output) === null || _a === void 0 ? void 0 : _a.path; const clientOutput = (_b = clientConfig.output) === null || _b === void 0 ? void 0 : _b.path; utils_1.deleteDir(config.distDir); // create output directory fs_1.default.mkdirSync(config.distDir); const publicDir = path_1.default.join(config.rootDir, 'public'); utils_1.copyDir(publicDir, serverOutput); utils_1.copyDir(publicDir, clientOutput); utils_1.logSuccess('Start to build server bundle...'); yield runCompile(serverConfig); utils_1.logSuccess('Start to build client bundle...'); yield runCompile(clientConfig, true); utils_1.logSuccess('Compiled successfully.'); } catch (error) { if (error) { utils_1.logError(error); } process.exit(1); } }); } build();