refactor(next/head): improve SEO
This commit is contained in:
parent
7c3e436d85
commit
d10a35d1d2
@ -1,74 +1,62 @@
|
|||||||
import Head from 'next/head'
|
import Head from 'next/head'
|
||||||
import { projectConfig } from 'utils/config'
|
import { SEODefaultValues } from 'types/config'
|
||||||
|
import { SEOConfig } from 'utils/config'
|
||||||
interface HeadProps {
|
|
||||||
title?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
const NextHead: React.FC<HeadProps> = (props) => {
|
|
||||||
const { title = projectConfig.shortName } = props
|
|
||||||
|
|
||||||
|
const NextHead: React.FC<SEODefaultValues> = ({
|
||||||
|
shortName = SEOConfig.shortName,
|
||||||
|
longName = SEOConfig.longName,
|
||||||
|
color = SEOConfig.color,
|
||||||
|
defaultLocale = SEOConfig.defaultLocale,
|
||||||
|
description = SEOConfig.description,
|
||||||
|
icons = SEOConfig.icons,
|
||||||
|
url = SEOConfig.url
|
||||||
|
}) => {
|
||||||
return (
|
return (
|
||||||
<Head>
|
<Head>
|
||||||
<title>{title}</title>
|
<title>{shortName}</title>
|
||||||
|
|
||||||
<link
|
<link rel='shortcut icon' href={icons?.default} type='image/x-icon' />
|
||||||
rel='shortcut icon'
|
<link rel='apple-touch-icon' sizes='180x180' href={icons?.apple} />
|
||||||
href={projectConfig.icons.default}
|
<link rel='icon' type='image/png' sizes='16x16' href={icons?.['16_16']} />
|
||||||
type='image/x-icon'
|
<link rel='icon' type='image/png' sizes='32x32' href={icons?.['32_32']} />
|
||||||
/>
|
|
||||||
<link
|
|
||||||
rel='apple-touch-icon'
|
|
||||||
sizes='180x180'
|
|
||||||
href={projectConfig.icons.apple}
|
|
||||||
/>
|
|
||||||
<link
|
|
||||||
rel='icon'
|
|
||||||
type='image/png'
|
|
||||||
sizes='16x16'
|
|
||||||
href={projectConfig.icons['16_16']}
|
|
||||||
/>
|
|
||||||
<link
|
|
||||||
rel='icon'
|
|
||||||
type='image/png'
|
|
||||||
sizes='32x32'
|
|
||||||
href={projectConfig.icons['32_32']}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Default meta tags */}
|
{/* Default meta tags */}
|
||||||
|
|
||||||
|
<meta charSet='UTF-8' />
|
||||||
|
<meta httpEquiv='X-UA-Compatible' content='IE=edge' />
|
||||||
<meta name='viewport' content='width=device-width, initial-scale=1.0' />
|
<meta name='viewport' content='width=device-width, initial-scale=1.0' />
|
||||||
<meta name='description' content={projectConfig.description} />
|
<meta name='description' content={description} />
|
||||||
<meta name='language' content={projectConfig.defaultLocale} />
|
<meta name='language' content={defaultLocale} />
|
||||||
<meta name='theme-color' content={projectConfig.color} />
|
<meta name='theme-color' content={color} />
|
||||||
<meta name='copyright' content={projectConfig.shortName} />
|
<meta name='copyright' content={shortName} />
|
||||||
<meta name='author' content={projectConfig.shortName} />
|
<meta name='author' content={shortName} />
|
||||||
<meta name='publisher' content={projectConfig.shortName} />
|
<meta name='publisher' content={shortName} />
|
||||||
<meta name='robots' content='index, follow' />
|
<meta name='robots' content='index, follow' />
|
||||||
<meta name='rating' content='general' />
|
<meta name='rating' content='general' />
|
||||||
<meta name='distribution' content='global' />
|
<meta name='distribution' content='global' />
|
||||||
<meta name='msapplication-TileColor' content={projectConfig.color} />
|
<meta name='msapplication-TileColor' content={color} />
|
||||||
|
|
||||||
{/* Open graph MT */}
|
{/* Open graph MT */}
|
||||||
|
|
||||||
<meta property='og:title' content={projectConfig.shortName} />
|
<meta property='og:title' content={shortName} />
|
||||||
<meta property='og:type' content='website' />
|
<meta property='og:type' content='website' />
|
||||||
<meta property='og:url' content={projectConfig.url} />
|
<meta property='og:url' content={url} />
|
||||||
<meta property='og:image' content={projectConfig.icons.image} />
|
<meta property='og:image' content={icons?.image} />
|
||||||
<meta property='og:description' content={projectConfig.description} />
|
<meta property='og:description' content={description} />
|
||||||
<meta
|
<meta
|
||||||
property='og:locale'
|
property='og:locale'
|
||||||
content={`${
|
content={SEOConfig.defaultLocale?.concat(
|
||||||
projectConfig.defaultLocale
|
'_',
|
||||||
}_${projectConfig.defaultLocale.toUpperCase()}`}
|
SEOConfig.defaultLocale.toUpperCase()
|
||||||
|
)}
|
||||||
/>
|
/>
|
||||||
<meta property='og:site_name' content={projectConfig.longName} />
|
<meta property='og:site_name' content={longName} />
|
||||||
|
|
||||||
{/* Twitter card Metadata */}
|
{/* Twitter card Metadata */}
|
||||||
<meta name='twitter:card' content='summary' />
|
<meta name='twitter:card' content='summary' />
|
||||||
<meta name='twitter:description' content={projectConfig.description} />
|
<meta name='twitter:description' content={description} />
|
||||||
<meta name='twitter:title' content={projectConfig.longName} />
|
<meta name='twitter:title' content={longName} />
|
||||||
<meta name='twitter:image:src' content={projectConfig.icons.image} />
|
<meta name='twitter:image:src' content={icons?.image} />
|
||||||
</Head>
|
</Head>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user