Conditionally add build identifier to <head />
This commit is contained in:
parent
02f2d08e04
commit
667328b166
@ -203,6 +203,11 @@ Create Upstash Redis store from storage tab of Vercel dashboard and link to your
|
||||
- urls must begin with 'https'
|
||||
- ⚠️ this will invoke arbitrary script execution on every page—use with caution
|
||||
|
||||
### Debugging
|
||||
- `DISABLE_DEBUG_OUTPUTS = 1`
|
||||
- removes build identifier in `<head />`
|
||||
- disables `/admin/configuration/export.json`
|
||||
|
||||
## Alternate storage providers
|
||||
|
||||
Only one storage adapter—Vercel Blob, Cloudflare R2, AWS S3, or MinIO—can be used at a time. Ideally, this is configured before photos are uploaded (see [Issue #34](https://github.com/sambecker/exif-photo-blog/issues/34) for migration considerations). If you have multiple adapters, you can set one as preferred by storing `aws-s3`, `cloudflare-r2`, `minio`, or `vercel-blob` in `NEXT_PUBLIC_STORAGE_PREFERENCE`. See [FAQ](#will-there-be-support-for-image-storage-providers-beyond-vercel-aws-and-cloudflare) regarding unsupported providers.
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
import { APP_CONFIGURATION } from '@/app/config';
|
||||
import { APP_CONFIGURATION, DEBUG_OUTPUTS_ENABLED } from '@/app/config';
|
||||
|
||||
export async function GET() {
|
||||
return Response.json(APP_CONFIGURATION);
|
||||
return DEBUG_OUTPUTS_ENABLED
|
||||
? Response.json(APP_CONFIGURATION)
|
||||
: new Response('Debugging disabled', { status: 404 });
|
||||
};
|
||||
|
||||
@ -11,6 +11,8 @@ import {
|
||||
SITE_FEEDS_ENABLED,
|
||||
ADMIN_DEBUG_TOOLS_ENABLED,
|
||||
PAGE_SCRIPT_URLS,
|
||||
VERCEL_GIT_COMMIT_SHA_SHORT,
|
||||
DEBUG_OUTPUTS_ENABLED,
|
||||
} from '@/app/config';
|
||||
import AppStateProvider from '@/app/AppStateProvider';
|
||||
import ToasterWithThemes from '@/toast/ToasterWithThemes';
|
||||
@ -70,6 +72,11 @@ export const metadata: Metadata = {
|
||||
type: 'image/png',
|
||||
sizes: '180x180',
|
||||
}],
|
||||
...DEBUG_OUTPUTS_ENABLED && {
|
||||
other: {
|
||||
'build': VERCEL_GIT_COMMIT_SHA_SHORT ?? 'unknown',
|
||||
},
|
||||
},
|
||||
...SITE_FEEDS_ENABLED && {
|
||||
alternates: {
|
||||
types: {
|
||||
|
||||
@ -133,6 +133,8 @@ export default function AdminAppConfigurationClient({
|
||||
// Scripts & Analytics
|
||||
hasPageScriptUrls,
|
||||
pageScriptUrls,
|
||||
// Debugging
|
||||
isDebuggingEnabled,
|
||||
// Internal
|
||||
areInternalToolsEnabled,
|
||||
areAdminDebugToolsEnabled,
|
||||
@ -972,6 +974,18 @@ export default function AdminAppConfigurationClient({
|
||||
{renderEnvVars(['PAGE_SCRIPT_URLS'])}
|
||||
</ChecklistRow>
|
||||
</>;
|
||||
case 'Debugging':
|
||||
return <>
|
||||
<ChecklistRow
|
||||
title="Debug outputs"
|
||||
status={isDebuggingEnabled}
|
||||
optional
|
||||
>
|
||||
Set environment variable to {'"1"'} to disable build identifier
|
||||
and admin configuration export:
|
||||
{renderEnvVars(['DISABLE_DEBUG_OUTPUTS'])}
|
||||
</ChecklistRow>
|
||||
</>;
|
||||
case 'Internal':
|
||||
return <>
|
||||
<ChecklistRow
|
||||
|
||||
@ -3,7 +3,7 @@ import { BiData, BiGlobe, BiHide, BiLockAlt, BiPencil } from 'react-icons/bi';
|
||||
import { CgDebug } from 'react-icons/cg';
|
||||
import { FaRegFolderClosed } from 'react-icons/fa6';
|
||||
import { HiOutlineCog, HiSparkles } from 'react-icons/hi';
|
||||
import { IoMdGrid } from 'react-icons/io';
|
||||
import { IoMdGrid, IoMdPower } from 'react-icons/io';
|
||||
import { PiPaintBrushHousehold } from 'react-icons/pi';
|
||||
import { RiSpeedMiniLine } from 'react-icons/ri';
|
||||
import { TbBrandGoogleAnalytics } from 'react-icons/tb';
|
||||
@ -68,10 +68,20 @@ const ADMIN_CONFIG_SECTIONS = [{
|
||||
title: 'Scripts & Analytics',
|
||||
required: false,
|
||||
icon: <TbBrandGoogleAnalytics size={18} className="translate-y-[1px]" />,
|
||||
}, {
|
||||
title: 'Debugging',
|
||||
required: false,
|
||||
icon: <CgDebug
|
||||
size={18}
|
||||
className="translate-x-[-2px] translate-y-[0.5px]"
|
||||
/>,
|
||||
}, {
|
||||
title: 'Internal',
|
||||
required: false,
|
||||
icon: <CgDebug size={18} className="translate-y-[1px]" />,
|
||||
icon: <IoMdPower
|
||||
size={16}
|
||||
className="translate-x-[-1px] translate-y-[1px]"
|
||||
/>,
|
||||
}] as const satisfies AdminConfigSection[];
|
||||
|
||||
export type ConfigSectionKey = typeof ADMIN_CONFIG_SECTIONS[number]['title'];
|
||||
|
||||
@ -386,6 +386,10 @@ export const PAGE_SCRIPT_URLS = process.env.PAGE_SCRIPT_URLS
|
||||
.filter(url => url.startsWith('https://'))
|
||||
: [];
|
||||
|
||||
// DEBUGGING
|
||||
|
||||
export const DEBUG_OUTPUTS_ENABLED = process.env.DISABLE_DEBUG_OUTPUTS !== '1';
|
||||
|
||||
// INTERNAL
|
||||
|
||||
export const ADMIN_DEBUG_TOOLS_ENABLED = process.env.ADMIN_DEBUG_TOOLS === '1';
|
||||
@ -510,6 +514,8 @@ export const APP_CONFIGURATION = {
|
||||
// Scripts & Analytics
|
||||
hasPageScriptUrls: PAGE_SCRIPT_URLS.length > 0,
|
||||
pageScriptUrls: PAGE_SCRIPT_URLS,
|
||||
// Debugging
|
||||
isDebuggingEnabled: DEBUG_OUTPUTS_ENABLED,
|
||||
// Internal
|
||||
areInternalToolsEnabled: (
|
||||
ADMIN_DEBUG_TOOLS_ENABLED ||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user