UNPKG

gatsby-plugin-netlify-redirect

Version:
76 lines (63 loc) 2.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _webpackAssetsManifest = _interopRequireDefault(require("webpack-assets-manifest")); var _pluginData = _interopRequireDefault(require("./plugin-data")); var _buildHeadersProgram = _interopRequireDefault(require("./build-headers-program")); var _createRedirects = _interopRequireDefault(require("./create-redirects")); var _constants = require("./constants"); // https://www.netlify.com/docs/headers-and-basic-auth/ let assetsManifest = {}; // Inject a webpack plugin to get the file manifests so we can translate all link headers exports.onCreateWebpackConfig = ({ actions, stage }) => { if (stage !== _constants.BUILD_HTML_STAGE && stage !== _constants.BUILD_CSS_STAGE) { return; } actions.setWebpackConfig({ plugins: [new _webpackAssetsManifest.default({ assets: assetsManifest, // mutates object with entries merge: true })] }); }; exports.onPostBuild = async ({ store, pathPrefix, reporter }, userPluginOptions) => { const pluginData = (0, _pluginData.default)(store, assetsManifest, pathPrefix); const pluginOptions = { ..._constants.DEFAULT_OPTIONS, ...userPluginOptions }; const { redirects } = store.getState(); const NOT_FOUND_REGEXP = /\/404\/?$/; const localizedNotFound = []; let rewrites = []; if (pluginOptions.generateMatchPathRewrites) { const { pages } = store.getState(); Array.from(pages.values()).filter(page => page.matchPath && page.matchPath !== page.path).forEach(page => { const isNotFoundPage = NOT_FOUND_REGEXP.test(page.path); rewrites.push(); if (isNotFoundPage) { localizedNotFound.push({ fromPath: page.matchPath, status: 404, toPath: page.path }); } else { rewrites.push({ fromPath: page.matchPath, toPath: page.path, status: 200 }); } }); } await Promise.all([(0, _buildHeadersProgram.default)(pluginData, pluginOptions, reporter), (0, _createRedirects.default)(pluginData, redirects, rewrites.concat(localizedNotFound))]); };