fix build

This commit is contained in:
tangly1024.com
2023-11-08 17:32:41 +08:00
parent f2e2ae8d5f
commit f96aa2242f
9 changed files with 56 additions and 54 deletions

View File

@@ -304,13 +304,11 @@ const BLOG = {
// HOSTNAME: Webmention绑定之网域通常即为本站网址 // HOSTNAME: Webmention绑定之网域通常即为本站网址
// TWITTER_USERNAME: 评论显示区域需要的资讯 // TWITTER_USERNAME: 评论显示区域需要的资讯
// TOKEN: Webmention的API token // TOKEN: Webmention的API token
COMMENT_WEBMENTION: { COMMENT_WEBMENTION_ENABLE: process.env.NEXT_PUBLIC_WEBMENTION_ENABLE || false,
ENABLE: process.env.NEXT_PUBLIC_WEBMENTION_ENABLE || false, COMMENT_WEBMENTION_AUTH: process.env.NEXT_PUBLIC_WEBMENTION_AUTH || '',
AUTH: process.env.NEXT_PUBLIC_WEBMENTION_AUTH || '', COMMENT_WEBMENTION_HOSTNAME: process.env.NEXT_PUBLIC_WEBMENTION_HOSTNAME || '',
HOSTNAME: process.env.NEXT_PUBLIC_WEBMENTION_HOSTNAME || '', COMMENT_WEBMENTION_TWITTER_USERNAME: process.env.NEXT_PUBLIC_TWITTER_USERNAME || '',
TWITTER_USERNAME: process.env.NEXT_PUBLIC_TWITTER_USERNAME || '', COMMENT_WEBMENTION_TOKEN: process.env.NEXT_PUBLIC_WEBMENTION_TOKEN || '',
TOKEN: process.env.NEXT_PUBLIC_WEBMENTION_TOKEN || ''
},
// <---- 评论插件 // <---- 评论插件

View File

@@ -60,7 +60,7 @@ const ValineComponent = dynamic(() => import('@/components/ValineComponent'), {
*/ */
export const commentEnable = BLOG.COMMENT_TWIKOO_ENV_ID || BLOG.COMMENT_WALINE_SERVER_URL || BLOG.COMMENT_VALINE_APP_ID || export const commentEnable = BLOG.COMMENT_TWIKOO_ENV_ID || BLOG.COMMENT_WALINE_SERVER_URL || BLOG.COMMENT_VALINE_APP_ID ||
BLOG.COMMENT_GISCUS_REPO || BLOG.COMMENT_CUSDIS_APP_ID || BLOG.COMMENT_UTTERRANCES_REPO || BLOG.COMMENT_GISCUS_REPO || BLOG.COMMENT_CUSDIS_APP_ID || BLOG.COMMENT_UTTERRANCES_REPO ||
BLOG.COMMENT_GITALK_CLIENT_ID || BLOG.COMMENT_WEBMENTION.ENABLE BLOG.COMMENT_GITALK_CLIENT_ID || BLOG.COMMENT_WEBMENTION_ENABLE
/** /**
* 评论组件 * 评论组件
@@ -119,7 +119,7 @@ const Comment = ({ siteInfo, frontMatter, className }) => {
<GitalkComponent frontMatter={frontMatter} /> <GitalkComponent frontMatter={frontMatter} />
</div>)} </div>)}
{BLOG.COMMENT_WEBMENTION.ENABLE && (<div key='WebMention'> {BLOG.COMMENT_WEBMENTION_ENABLE && (<div key='WebMention'>
<WebMentionComponent frontMatter={frontMatter} className="px-2" /> <WebMentionComponent frontMatter={frontMatter} className="px-2" />
</div>)} </div>)}
</Tabs> </Tabs>

View File

@@ -2,7 +2,7 @@ import { siteConfig } from '@/lib/config'
import Head from 'next/head' import Head from 'next/head'
const CommonHead = ({ meta, children }) => { const CommonHead = ({ meta, children }) => {
let url = siteConfig('PATH')?.length ? `${siteConfig('LINK')}/${siteConfig('SUB_PATH','')}` : siteConfig('LINK') let url = siteConfig('PATH')?.length ? `${siteConfig('LINK')}/${siteConfig('SUB_PATH', '')}` : siteConfig('LINK')
let image let image
if (meta) { if (meta) {
url = `${url}/${meta.slug}` url = `${url}/${meta.slug}`
@@ -13,7 +13,7 @@ const CommonHead = ({ meta, children }) => {
const type = meta?.type || 'website' const type = meta?.type || 'website'
const keywords = meta?.tags || siteConfig('KEYWORDS') const keywords = meta?.tags || siteConfig('KEYWORDS')
const lang = siteConfig('LANG').replace('-', '_') // Facebook OpenGraph 要 zh_CN 這樣的格式才抓得到語言 const lang = siteConfig('LANG').replace('-', '_') // Facebook OpenGraph 要 zh_CN 這樣的格式才抓得到語言
const category = meta?.category || siteConfig('KEYWORDS') || '軟體科技' // section 主要是像是 category 這樣的分類Facebook 用這個來抓連結的分類 const category = meta?.category || siteConfig('KEYWORDS') // section 主要是像是 category 這樣的分類Facebook 用這個來抓連結的分類
return ( return (
<Head> <Head>
@@ -42,15 +42,15 @@ const CommonHead = ({ meta, children }) => {
<meta name="twitter:description" content={description} /> <meta name="twitter:description" content={description} />
<meta name="twitter:title" content={title} /> <meta name="twitter:title" content={title} />
{siteConfig('COMMENT_WEBMENTION').ENABLE && ( {siteConfig('COMMENT_WEBMENTION_ENABLE') && (
<> <>
<link rel="webmention" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION').HOSTNAME}/webmention`} /> <link rel="webmention" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION_HOSTNAME')}/webmention`} />
<link rel="pingback" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION').HOSTNAME}/xmlrpc`} /> <link rel="pingback" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION_HOSTNAME')}/xmlrpc`} />
</> </>
)} )}
{siteConfig('COMMENT_WEBMENTION').ENABLE && siteConfig('COMMENT_WEBMENTION').AUTH !== '' && ( {siteConfig('COMMENT_WEBMENTION_ENABLE') && siteConfig('COMMENT_WEBMENTION_AUTH') !== '' && (
<link href={siteConfig('COMMENT_WEBMENTION').AUTH} rel="me" /> <link href={siteConfig('COMMENT_WEBMENTION_AUTH')} rel="me" />
)} )}
{JSON.parse(siteConfig('ANALYTICS_BUSUANZI_ENABLE')) && <meta name="referrer" content="no-referrer-when-downgrade" />} {JSON.parse(siteConfig('ANALYTICS_BUSUANZI_ENABLE')) && <meta name="referrer" content="no-referrer-when-downgrade" />}

View File

@@ -78,7 +78,7 @@ const WebmentionReplies = ({ target }) => {
const [mentions, setMentions] = useState([]) const [mentions, setMentions] = useState([])
const fetchMentions = async (target) => const fetchMentions = async (target) =>
fetch( fetch(
`https://webmention.io/api/mentions.jf2?per-page=500&target=${encodeURIComponent(target)}&token=${BLOG.COMMENT_WEBMENTION.TOKEN}` `https://webmention.io/api/mentions.jf2?per-page=500&target=${encodeURIComponent(target)}&token=${BLOG.COMMENT_WEBMENTION_TOKEN}`
).then((response) => (response.json ? response.json() : response)) ).then((response) => (response.json ? response.json() : response))
useEffect(() => { useEffect(() => {
async function getMentions() { async function getMentions() {
@@ -137,8 +137,8 @@ const WebmentionReplies = ({ target }) => {
const WebMentionBlock = ({ frontMatter }) => { const WebMentionBlock = ({ frontMatter }) => {
const router = useRouter() const router = useRouter()
const url = `https://${BLOG.COMMENT_WEBMENTION.HOSTNAME}${router.asPath}` const url = `https://${BLOG.COMMENT_WEBMENTION_HOSTNAME}${router.asPath}`
const tweet = `${frontMatter.title} by @${BLOG.COMMENT_WEBMENTION.TWITTER_USERNAME} ${url}` const tweet = `${frontMatter.title} by @${BLOG.COMMENT_WEBMENTION_TWITTER_USERNAME} ${url}`
return ( return (
<div className='webmention-block'> <div className='webmention-block'>

View File

@@ -47,7 +47,7 @@ export const siteConfig = (key, defaultVal = null, extendConfig) => {
} }
// 其次 有传入的配置参考,则尝试读取 // 其次 有传入的配置参考,则尝试读取
if (!extendConfig) { if (!val && extendConfig) {
val = extendConfig[key] val = extendConfig[key]
} }
@@ -55,11 +55,21 @@ export const siteConfig = (key, defaultVal = null, extendConfig) => {
if (!val) { if (!val) {
val = BLOG[key] val = BLOG[key]
} }
if (!val) { if (!val) {
val = defaultVal return defaultVal
} else {
if (typeof val === 'string') {
return val;
} else {
try {
return JSON.parse(val);
} catch (error) {
// 如果值是一个字符串但不是有效的 JSON 格式,直接返回字符串
return val;
}
}
} }
// console.log('实际配置', key, val)
return val
} }
/** /**

View File

@@ -5,6 +5,7 @@ import { useState, useRef, useEffect } from 'react'
import { Transition } from '@headlessui/react' import { Transition } from '@headlessui/react'
import CONFIG from '../config' import CONFIG from '../config'
import LazyImage from '@/components/LazyImage' import LazyImage from '@/components/LazyImage'
import { siteConfig } from '@/lib/config'
// import FeaturesElement from '@/public/images/features-element.png' // import FeaturesElement from '@/public/images/features-element.png'
export default function Features() { export default function Features() {

View File

@@ -7,7 +7,6 @@
* 2. 内容大部分是在此文件中写死notion数据从props参数中传进来 * 2. 内容大部分是在此文件中写死notion数据从props参数中传进来
* 3. 您可在此网站找到更多喜欢的组件 https://www.tailwind-kit.com/ * 3. 您可在此网站找到更多喜欢的组件 https://www.tailwind-kit.com/
*/ */
/* eslint-disable*/
import NotionPage from '@/components/NotionPage' import NotionPage from '@/components/NotionPage'
import Header from './components/Header' import Header from './components/Header'
import Footer from './components/Footer' import Footer from './components/Footer'
@@ -21,11 +20,7 @@ import { useRouter } from 'next/router'
import CONFIG from './config' import CONFIG from './config'
import Loading from '@/components/Loading' import Loading from '@/components/Loading'
import { isBrowser } from '@/lib/utils' import { isBrowser } from '@/lib/utils'
import { siteConfig } from '@/lib/config'
/**
* 这是个配置文件,可以方便在此统一配置信息
*/
const THEME_CONFIG = { THEME: 'landing' }
/** /**
* 布局框架 * 布局框架
@@ -35,9 +30,9 @@ const THEME_CONFIG = { THEME: 'landing' }
* @returns * @returns
*/ */
const LayoutBase = (props) => { const LayoutBase = (props) => {
const { meta, siteInfo, children } = props const { meta, siteInfo, children } = props
return <div id='theme-landing' className="overflow-hidden flex flex-col justify-between bg-white"> return <div id='theme-landing' className="overflow-hidden flex flex-col justify-between bg-white">
{/* 网页SEO */} {/* 网页SEO */}
<CommonHead meta={meta} siteInfo={siteInfo} /> <CommonHead meta={meta} siteInfo={siteInfo} />
@@ -55,14 +50,13 @@ const LayoutBase = (props) => {
</div> </div>
} }
/** /**
* 首页布局 * 首页布局
* @param {*} props * @param {*} props
* @returns * @returns
*/ */
const LayoutIndex = (props) => { const LayoutIndex = (props) => {
return ( return (
<LayoutBase {...props}> <LayoutBase {...props}>
<Hero /> <Hero />
<Features /> <Features />
@@ -70,7 +64,7 @@ const LayoutIndex = (props) => {
<Testimonials /> <Testimonials />
<Newsletter /> <Newsletter />
</LayoutBase> </LayoutBase>
) )
} }
/** /**
@@ -79,22 +73,20 @@ const LayoutIndex = (props) => {
* @returns * @returns
*/ */
const LayoutSlug = (props) => { const LayoutSlug = (props) => {
// 如果 是 /article/[slug] 的文章路径则进行重定向到另一个域名 // 如果 是 /article/[slug] 的文章路径则进行重定向到另一个域名
const router = useRouter() const router = useRouter()
if (JSON.parse(siteConfig('LANDING_POST_REDIRECT_ENABLE', null, CONFIG)) && isBrowser && router.route == '/[prefix]/[slug]') { if (JSON.parse(siteConfig('LANDING_POST_REDIRECT_ENABLE', null, CONFIG)) && isBrowser && router.route === '/[prefix]/[slug]') {
const redirectUrl = siteConfig('LANDING_POST_REDIRECT_URL', null, CONFIG) + router.asPath.replace('?theme=landing', '') const redirectUrl = siteConfig('LANDING_POST_REDIRECT_URL', null, CONFIG) + router.asPath.replace('?theme=landing', '')
router.push(redirectUrl) router.push(redirectUrl)
return <div id='theme-landing'><Loading /></div> return <div id='theme-landing'><Loading /></div>
} }
return <LayoutBase {...props}> return <LayoutBase {...props}>
<div id='container-inner' className='mx-auto max-w-screen-lg p-12'> <div id='container-inner' className='mx-auto max-w-screen-lg p-12'>
<NotionPage {...props} /> <NotionPage {...props} />
</div> </div>
</LayoutBase> </LayoutBase>
} }
// 其他布局暂时留空 // 其他布局暂时留空
@@ -106,13 +98,13 @@ const LayoutPostList = (props) => <LayoutBase {...props}><Hero /></LayoutBase>
const LayoutTagIndex = (props) => <LayoutBase {...props}><Hero /></LayoutBase> const LayoutTagIndex = (props) => <LayoutBase {...props}><Hero /></LayoutBase>
export { export {
THEME_CONFIG, CONFIG as THEME_CONFIG,
LayoutIndex, LayoutIndex,
LayoutSearch, LayoutSearch,
LayoutArchive, LayoutArchive,
LayoutSlug, LayoutSlug,
Layout404, Layout404,
LayoutPostList, LayoutPostList,
LayoutCategoryIndex, LayoutCategoryIndex,
LayoutTagIndex LayoutTagIndex
} }

View File

@@ -1,3 +1,4 @@
import { siteConfig } from '@/lib/config'
import Link from 'next/link' import Link from 'next/link'
/** /**

View File

@@ -61,7 +61,7 @@ const Nav = props => {
</p> </p>
) )
: ( : (
<p className="ml-2 font-medium text-gray-800 dark:text-gray-300 header-name"> <p className="ml-2 font-medium text-gray-800 dark:text-gray-300 header-name whitespace-nowrap">
{siteConfig('TITLE')} {siteConfig('TITLE')}
{/* ,{' '}<span className="font-normal">{siteConfig('HOME_BANNER_IMAGE')}</span> */} {/* ,{' '}<span className="font-normal">{siteConfig('HOME_BANNER_IMAGE')}</span> */}
</p> </p>