feat: update config to allow env overrides

This commit is contained in:
Travis Fischer
2021-02-03 20:27:16 -05:00
parent 6b9b0f8fb9
commit 0bd5a87352
2 changed files with 55 additions and 11 deletions

View File

@@ -10,63 +10,94 @@ import { getSiteConfig, getEnv } from './get-config-value'
// where it all starts -- the site's root Notion page
export const rootNotionPageId: string = parsePageId(
getSiteConfig('rootNotionPageId'),
getSiteConfig('rootNotionPageId', 'ROOT_NOTION_PAGE_ID'),
{ uuid: false }
)
if (!rootNotionPageId) {
throw new Error('Config error invalid "rootNotionPageId"')
}
// if you want to restrict pages to a single notion workspace (optional)
export const rootNotionSpaceId: string | null = parsePageId(
getSiteConfig('rootNotionSpaceId', null),
getSiteConfig('rootNotionSpaceId', 'ROOT_NOTION_SPACE_ID', null),
{ uuid: true }
)
// general site config
export const name: string = getSiteConfig('name')
export const author: string = getSiteConfig('author')
export const domain: string = getSiteConfig('domain')
export const description: string = getSiteConfig('description', 'Notion Blog')
export const name: string = getSiteConfig('name', 'SITE_NAME')
export const author: string = getSiteConfig('author', 'SITE_AUTHOR')
export const domain: string = getSiteConfig('domain', 'SITE_DOMAIN')
export const description: string = getSiteConfig(
'description',
'SITE_DESCRIPTION',
'Notion Blog'
)
// social accounts
export const twitter: string | null = getSiteConfig('twitter', null)
export const github: string | null = getSiteConfig('github', null)
export const linkedin: string | null = getSiteConfig('linkedin', null)
export const twitter: string | null = getSiteConfig(
'twitter',
'SITE_TWITTER',
null
)
export const github: string | null = getSiteConfig(
'github',
'SITE_GITHUB',
null
)
export const linkedin: string | null = getSiteConfig(
'linkedin',
'SITE_LINKEDIN',
null
)
export const socialImageTitle: string | null = getSiteConfig(
'socialImageTitle',
'SOCIAL_IMAGE_TITLE',
null
)
export const socialImageSubtitle: string | null = getSiteConfig(
'socialImageSubtitle',
'SOCIAL_IMAGE_SUBTITLE',
null
)
// default notion values for site-wide consistency (optional; may be overridden on a per-page basis)
export const defaultPageIcon: string | null = getSiteConfig(
'defaultPageIcon',
'DEFAULT_PAGE_ICON',
null
)
export const defaultPageCover: string | null = getSiteConfig(
'defaultPageCover',
'DEFAULT_PAGE_COVER',
null
)
export const defaultPageCoverPosition: number = getSiteConfig(
'defaultPageCoverPosition',
null,
0.5
)
// Optional utteranc.es comments via GitHub issue comments
export const utterancesGitHubRepo: string | null = getSiteConfig(
'utterancesGitHubRepo',
'UTTERANCES_GITHUB_REPO',
null
)
// Optional image CDN host to proxy all image requests through
export const imageCDNHost: string | null = getSiteConfig('imageCDNHost', null)
export const imageCDNHost: string | null = getSiteConfig(
'imageCDNHost',
'IMAGE_CDN_HOST',
null
)
// Optional whether or not to enable support for LQIP preview images
// (requires a Google Firebase collection)
export const isPreviewImageSupportEnabled: boolean = getSiteConfig(
'isPreviewImageSupportEnabled',
null,
false
)

View File

@@ -4,7 +4,20 @@ if (!siteConfig) {
throw new Error(`Config error: invalid site.config.js`)
}
export function getSiteConfig<T>(key: string, defaultValue?: T): T {
export function getSiteConfig<T>(
key: string,
envKey?: string,
defaultValue?: T
): T {
if (envKey) {
// allow environment variables to override site.config.js
const envValue = process.env[envKey]
if (envValue !== undefined) {
return (envValue as unknown) as T
}
}
const value = siteConfig[key]
if (value !== undefined) {