131 lines
3.3 KiB
JavaScript
131 lines
3.3 KiB
JavaScript
const { defaultIcons } = require("gatsby-plugin-manifest/common");
|
|
|
|
if (!process.env.PORTAL_DOMAIN) {
|
|
throw new Error("PORTAL_DOMAIN cannot be empty");
|
|
}
|
|
|
|
module.exports = {
|
|
siteMetadata: {
|
|
title: `Skynet`,
|
|
description: `Skynet is a decentralized file sharing and content distribution protocol`,
|
|
author: `Skynet Labs`,
|
|
siteUrl: `https://${process.env.PORTAL_DOMAIN}`,
|
|
image: `/icons/icon-512x512.png`,
|
|
},
|
|
plugins: [
|
|
{
|
|
resolve: `gatsby-source-filesystem`,
|
|
options: {
|
|
name: `images`,
|
|
path: `${__dirname}/src/images`,
|
|
},
|
|
},
|
|
{
|
|
resolve: `gatsby-source-filesystem`,
|
|
options: {
|
|
name: `src`,
|
|
path: `${__dirname}/src/`,
|
|
},
|
|
},
|
|
{
|
|
resolve: `gatsby-source-filesystem`,
|
|
options: {
|
|
name: `data`,
|
|
path: `${__dirname}/data/`,
|
|
},
|
|
},
|
|
`gatsby-plugin-postcss`,
|
|
`gatsby-plugin-react-helmet`,
|
|
`gatsby-plugin-image`,
|
|
`gatsby-plugin-sharp`,
|
|
`gatsby-plugin-svgr`,
|
|
`gatsby-plugin-robots-txt`,
|
|
`gatsby-transformer-sharp`,
|
|
`gatsby-transformer-yaml`,
|
|
{
|
|
resolve: `gatsby-plugin-env-variables`,
|
|
options: {
|
|
allowList: ["PORTAL_DOMAIN", "WEBSITE_CONTACT_EMAIL", "WEBSITE_ABUSE_EMAIL"],
|
|
},
|
|
},
|
|
{
|
|
resolve: `gatsby-plugin-manifest`,
|
|
options: {
|
|
name: `Skynet`,
|
|
short_name: `Skynet`,
|
|
start_url: `/`,
|
|
background_color: `#f1f7f2`,
|
|
theme_color: `#f1f7f2`,
|
|
display: `minimal-ui`,
|
|
icon: `src/images/logo-sq.svg`, // This path is relative to the root of the site.
|
|
icons: [
|
|
...defaultIcons,
|
|
// when we're serving content from the portal on our pathnames that do not have
|
|
// favicon defined (basically all non-html content), we want the browsers to be
|
|
// able to fall back to favicon.ico (firefox does that)
|
|
{
|
|
src: `favicon.ico`,
|
|
sizes: `32x32`,
|
|
type: `image/x-icon`,
|
|
},
|
|
],
|
|
description: `Skynet portal homepage and upload widget`,
|
|
},
|
|
},
|
|
{
|
|
resolve: "gatsby-plugin-sitemap",
|
|
options: {
|
|
output: "/",
|
|
createLinkInHead: true,
|
|
excludes: ["/using-typescript/"],
|
|
query: `
|
|
{
|
|
site {
|
|
siteMetadata {
|
|
siteUrl
|
|
}
|
|
}
|
|
allSitePage {
|
|
nodes {
|
|
path
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
resolvePages: ({ allSitePage: { nodes: allPages } }) => {
|
|
const pathToDateMap = {};
|
|
|
|
// modify pages to filter out hidden news items and add date
|
|
const pages = allPages
|
|
.filter((page) => {
|
|
if (pathToDateMap[page.path] && pathToDateMap[page.path].hidden) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
})
|
|
.map((page) => {
|
|
return { ...page, ...pathToDateMap[page.path] };
|
|
});
|
|
|
|
return pages;
|
|
},
|
|
serialize: ({ path, date }) => {
|
|
let entry = {
|
|
url: path,
|
|
changefreq: "daily",
|
|
priority: 0.5,
|
|
};
|
|
|
|
if (date) {
|
|
entry.priority = 0.7;
|
|
entry.lastmod = date;
|
|
}
|
|
|
|
return entry;
|
|
},
|
|
},
|
|
},
|
|
],
|
|
};
|