gatsby-plugin-runtime-path-prefix
Version:
Adds support for deploying Gatsby to Swarm/IPFS by ensuring that assets are relative
65 lines (58 loc) • 1.62 kB
JavaScript
const {
injectScriptsInHtmlFiles,
relativizeHtmlFiles,
relativizeJsContentFiles,
relativizeMiscAssetFiles
} = require("./path-fixers");
exports.onPreBootstrap = ({
store,
reporter
}) => {
const {
config,
program
} = store.getState();
if (program.prefixPaths) {
const plugin = config.plugins.find(plugin => "resolve" in plugin && plugin.resolve === "gatsby-plugin-runtime-path-prefix");
const {
options: {
prefix,
pattern
}
} = plugin;
if (!config.pathPrefix || config.pathPrefix === "") {
reporter.panic(`You must set the prefix option in your gatsby-config.js file`);
}
if (!prefix || prefix === "") {
reporter.panic(`You must set the prefix option in gatsby-plugin-runtime-path-prefix options`);
}
if (!pattern || pattern === "") {
reporter.panic(`You must set the pattern option in gatsby-plugin-runtime-path-prefix options`);
}
}
};
exports.onPostBuild = async nodeOptions => {
const {
store
} = nodeOptions;
const {
config,
program
} = store.getState();
const plugin = config.plugins.find(plugin => "resolve" in plugin && plugin.resolve === "gatsby-plugin-runtime-path-prefix");
const {
options
} = plugin;
const {
prefix,
pattern,
forceTrailingSlash,
useBasename
} = options;
if (program.prefixPaths) {
await relativizeHtmlFiles(prefix, forceTrailingSlash);
await relativizeMiscAssetFiles(prefix);
await relativizeJsContentFiles(prefix);
await injectScriptsInHtmlFiles(prefix, pattern, forceTrailingSlash, useBasename);
}
};