universal-webpack
Version:
Isomorphic Webpack
45 lines (32 loc) • 1.69 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = prepare;
var _path = _interopRequireDefault(require("path"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
// Creates (or cleans) the server-side build folder.
//
// That's needed because Nodemon, for example,
// needs the folder to exist by the time it runs,
// otherwise it won't detect any changes to the code
// and therefore won't restart on code changes.
//
function prepare(settings, project_base_path) {
// By default, Webpack sets `.context` to `process.cwd()`
var base_path = project_base_path || process.cwd();
if (!settings.server.output) {
throw new Error('`settings.server.output` not specified');
}
var server_build_bundle_path = _path["default"].resolve(base_path, settings.server.output);
var server_build_folder = _path["default"].dirname(server_build_bundle_path); // Extra caution to prevent data loss
if (server_build_folder === _path["default"].normalize(base_path)) {
throw new Error('`settings.server.output` "' + server_build_folder + '" points to the project root folder. Won\'t clear that folder to prevent accidental data loss.');
} // Extra caution to prevent data loss
if (server_build_folder.indexOf(base_path) !== 0) {
throw new Error('`settings.server.output` "' + server_build_folder + '" points outside of the project root folder "' + base_path + '". Won\'t clear that folder to prevent accidental data loss');
}
_fsExtra["default"].emptyDirSync(server_build_folder);
}
//# sourceMappingURL=prepare.js.map