gatsby-plugin-nginx-redirect
Version:
Adds your redirects to nginx conf on gatsby build
49 lines (41 loc) • 1.18 kB
JavaScript
exports.__esModule = true;
exports.onPostBuild = onPostBuild;
var _nginxConf = require("nginx-conf");
var _fsExtra = require("fs-extra");
var _lodash = require("lodash");
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function onPostBuild({
store,
reporter
}, {
outputConfigFile,
inputConfigFile,
whereToIncludeRedirects = "server"
}) {
const {
redirects
} = store.getState();
await (0, _fsExtra.remove)(outputConfigFile);
return new Promise(resolve => {
_nginxConf.NginxConfFile.create(inputConfigFile, async function (err, conf) {
if (err) {
console.log(err);
return;
}
conf.die(inputConfigFile);
conf.flush();
await sleep(500);
redirects.forEach(redirect => {
(0, _lodash.get)(conf.nginx, whereToIncludeRedirects, conf.nginx)._add("rewrite", `^${redirect.fromPath}\\/?$ ${redirect.toPath} ${redirect.isPermanent ? "permanent" : "redirect"}`);
});
conf.live(outputConfigFile);
conf.flush();
await sleep(500);
resolve();
});
reporter.warn(`Added redirects to ${outputConfigFile}`);
});
}
;