react-torch
Version:
A lib to server-side render with react.
41 lines (40 loc) • 2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var path_1 = __importDefault(require("path"));
var webpack_1 = __importDefault(require("webpack"));
var webpackConfig_1 = __importDefault(require("./webpackConfig"));
var utils_1 = require("../../internal/utils");
var index_1 = require("../../index");
function compile(config, packContext, update) {
var webpackConfig = config.transformWebpackConfig((0, webpackConfig_1.default)(config), packContext, config);
var compiler = (0, webpack_1.default)(webpackConfig);
return new Promise(function (resolve, reject) {
var serverPath = path_1.default.join(config.dir, index_1.TORCH_DIR, index_1.TORCH_SERVER_DIR);
compiler.watch({}, function (err, stats) {
var _a, _b, _c;
if (err)
reject(err);
var statsObj = stats.toJson();
(_a = statsObj.errors) === null || _a === void 0 ? void 0 : _a.forEach(function (err) { return (0, utils_1.error)(err.message); });
(_b = statsObj.warnings) === null || _b === void 0 ? void 0 : _b.forEach(function (err) { return (0, utils_1.warn)(err.message); });
(_c = statsObj.assets) === null || _c === void 0 ? void 0 : _c.forEach(function (asset) {
var assetPath = path_1.default.join(serverPath, asset.name);
delete require.cache[require.resolve(assetPath)];
});
var routesPath = path_1.default.join(serverPath, index_1.TORCH_ROUTES_FILE_NAME);
var newModule = require(routesPath);
if (newModule) {
var routes = newModule.default || newModule;
update(routes);
resolve();
}
else {
reject('cannot find routes');
}
});
});
}
exports.default = compile;