varan
Version:
A webpack starter kit for offline-first bring-your-own-code apps with server side rendering
46 lines • 1.7 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const webpack_1 = __importDefault(require("webpack"));
const BuildError_1 = __importDefault(require("./BuildError"));
// Init
const getOpts = (options) => lodash_1.defaults({}, options, {});
// Exports
async function buildServer(config, options) {
const opts = getOpts(options);
const compiler = webpack_1.default(config);
if (opts.inputFileSystem)
compiler.inputFileSystem = opts.inputFileSystem;
if (opts.outputFileSystem)
compiler.outputFileSystem = opts.outputFileSystem;
// Create builder promise
return new Promise((resolve, reject) => {
// Watch
const watcher = compiler.watch({}, (err, stats) => {
if (err)
return reject(err);
const out = {
watcher,
compiler,
stats,
errors: [],
warnings: [],
};
const info = stats.toJson();
out.errors = info.errors;
out.warnings = info.warnings;
if (stats.hasErrors() || info.errors.length > 0) {
const buildError = new BuildError_1.default('Build failed with errors');
buildError.errors = out.errors;
buildError.warnings = out.warnings;
return reject(buildError);
}
return resolve(out);
});
});
}
exports.default = buildServer;
//# sourceMappingURL=buildServer.js.map