59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
"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
|
|
}, userPluginOptions) => {
|
|
const pluginData = (0, _pluginData.default)(store, assetsManifest, pathPrefix);
|
|
const pluginOptions = Object.assign({}, _constants.DEFAULT_OPTIONS, userPluginOptions);
|
|
const {
|
|
redirects
|
|
} = store.getState();
|
|
let rewrites = [];
|
|
|
|
if (pluginOptions.generateMatchPathRewrites) {
|
|
const {
|
|
pages
|
|
} = store.getState();
|
|
rewrites = Array.from(pages.values()).filter(page => page.matchPath && page.matchPath !== page.path).map(page => {
|
|
return {
|
|
fromPath: page.matchPath,
|
|
toPath: page.path
|
|
};
|
|
});
|
|
}
|
|
|
|
await Promise.all([(0, _buildHeadersProgram.default)(pluginData, pluginOptions), (0, _createRedirects.default)(pluginData, redirects, rewrites)]);
|
|
}; |