mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 07:26:52 +00:00
reverse format
This commit is contained in:
@@ -1,32 +1,32 @@
|
||||
// 注:process.env.XX 是 Vercel 的环境变量,配置方式见:https://docs.tangly1024.com/article/how-to-config-notion-next#c4768010ae7d44609b744e79e2f9959a
|
||||
// 注: process.env.XX是Vercel的环境变量,配置方式见:https://docs.tangly1024.com/article/how-to-config-notion-next#c4768010ae7d44609b744e79e2f9959a
|
||||
|
||||
const BLOG = {
|
||||
// Important page_id!!!Duplicate Template from https://www.notion.so/tanghh/02ab3b8678004aa69e9e415905ef32a5
|
||||
NOTION_PAGE_ID:
|
||||
process.env.NOTION_PAGE_ID || '20cb7f4f464a80db8541cbd0da70a64b',
|
||||
THEME: process.env.NEXT_PUBLIC_THEME || 'typography', // 当前主题,在 themes 文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple
|
||||
process.env.NOTION_PAGE_ID ||
|
||||
'02ab3b8678004aa69e9e415905ef32a5,en:7c1d570661754c8fbc568e00a01fd70e',
|
||||
THEME: process.env.NEXT_PUBLIC_THEME || 'simple', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple
|
||||
LANG: process.env.NEXT_PUBLIC_LANG || 'zh-CN', // e.g 'zh-CN','en-US' see /lib/lang.js for more.
|
||||
SINCE: process.env.NEXT_PUBLIC_SINCE || 2021, // e.g if leave this empty, current year will be used.
|
||||
|
||||
PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章 URL 都以 .html 结尾。
|
||||
NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 5, // 更新缓存间隔 单位 (秒);即每个页面有 5 秒的纯静态期、此期间无论多少次访问都不会抓取 notion 数据;调大该值有助于节省 Vercel 资源、同时提升访问速率,但也会使文章更新有延迟。
|
||||
APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式,dark 夜间模式,auto 根据时间和主题自动夜间模式
|
||||
APPEARANCE_DARK_TIME: process.env.NEXT_PUBLIC_APPEARANCE_DARK_TIME || [18, 6], // 夜间模式起至时间,false 时关闭根据时间自动切换夜间模式
|
||||
PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章URL都以 .html 结尾。
|
||||
NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 5, // 更新缓存间隔 单位(秒);即每个页面有5秒的纯静态期、此期间无论多少次访问都不会抓取notion数据;调大该值有助于节省Vercel资源、同时提升访问速率,但也会使文章更新有延迟。
|
||||
APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式 , dark夜间模式, auto根据时间和主题自动夜间模式
|
||||
APPEARANCE_DARK_TIME: process.env.NEXT_PUBLIC_APPEARANCE_DARK_TIME || [18, 6], // 夜间模式起至时间,false时关闭根据时间自动切换夜间模式
|
||||
|
||||
AUTHOR: process.env.NEXT_PUBLIC_AUTHOR || 'NotionNext', // 您的昵称 例如 tangly1024
|
||||
BIO: process.env.NEXT_PUBLIC_BIO || '一个普通的干饭人🍚', // 作者简介
|
||||
LINK: process.env.NEXT_PUBLIC_LINK || 'https://tangly1024.com', // 网站地址
|
||||
KEYWORDS: process.env.NEXT_PUBLIC_KEYWORD || 'Notion, 博客', // 网站关键词 英文逗号隔开
|
||||
BLOG_FAVICON: process.env.NEXT_PUBLIC_FAVICON || '/favicon.ico', // blog favicon 配置,默认使用 /public/favicon.ico,支持在线图片,如 https://img.imesong.com/favicon.png
|
||||
BEI_AN: process.env.NEXT_PUBLIC_BEI_AN || '', // 备案号 闽 ICP 备 XXXXXX
|
||||
BEI_AN_LINK:
|
||||
process.env.NEXT_PUBLIC_BEI_AN_LINK || 'https://beian.miit.gov.cn/', // 备案查询链接,如果用了萌备等备案请在这里填写
|
||||
BLOG_FAVICON: process.env.NEXT_PUBLIC_FAVICON || '/favicon.ico', // blog favicon 配置, 默认使用 /public/favicon.ico,支持在线图片,如 https://img.imesong.com/favicon.png
|
||||
BEI_AN: process.env.NEXT_PUBLIC_BEI_AN || '', // 备案号 闽ICP备XXXXXX
|
||||
BEI_AN_LINK: process.env.NEXT_PUBLIC_BEI_AN_LINK || 'https://beian.miit.gov.cn/', // 备案查询链接,如果用了萌备等备案请在这里填写
|
||||
|
||||
// RSS 订阅
|
||||
ENABLE_RSS: process.env.NEXT_PUBLIC_ENABLE_RSS || true, // 是否开启 RSS 订阅功能
|
||||
// RSS订阅
|
||||
ENABLE_RSS: process.env.NEXT_PUBLIC_ENABLE_RSS || true, // 是否开启RSS订阅功能
|
||||
|
||||
// 其它复杂配置
|
||||
// 原配置文件过长,且并非所有人都会用到,故此将配置拆分到/conf/目录下,按需找到对应文件并修改即可
|
||||
// 原配置文件过长,且并非所有人都会用到,故此将配置拆分到/conf/目录下, 按需找到对应文件并修改即可
|
||||
...require('./conf/comment.config'), // 评论插件
|
||||
...require('./conf/contact.config'), // 作者联系方式配置
|
||||
...require('./conf/post.config'), // 文章与列表配置
|
||||
@@ -38,11 +38,11 @@ const BLOG = {
|
||||
...require('./conf/animation.config'), // 动效美化效果
|
||||
...require('./conf/widget.config'), // 悬浮在网页上的挂件,聊天客服、宠物挂件、音乐播放器等
|
||||
...require('./conf/ad.config'), // 广告营收插件
|
||||
...require('./conf/plugin.config'), // 其他第三方插件 algolia 全文索引
|
||||
...require('./conf/plugin.config'), // 其他第三方插件 algolia全文索引
|
||||
|
||||
// 高级用法
|
||||
...require('./conf/layout-map.config'), // 路由与布局映射自定义,例如自定义特定路由的页面布局
|
||||
...require('./conf/notion.config'), // 读取 notion 数据库相关的扩展配置,例如自定义表头
|
||||
...require('./conf/notion.config'), // 读取notion数据库相关的扩展配置,例如自定义表头
|
||||
...require('./conf/dev.config'), // 开发、调试时需要关注的配置
|
||||
|
||||
// 自定义外部脚本,外部样式
|
||||
@@ -50,22 +50,22 @@ const BLOG = {
|
||||
CUSTOM_EXTERNAL_CSS: [''], // e.g. ['http://xx.com/style.css','http://xx.com/style.css']
|
||||
|
||||
// 自定义菜单
|
||||
CUSTOM_MENU: process.env.NEXT_PUBLIC_CUSTOM_MENU || true, // 支持 Menu 类型的菜单,替代了 3.12 版本前的 Page 类型
|
||||
CUSTOM_MENU: process.env.NEXT_PUBLIC_CUSTOM_MENU || true, // 支持Menu类型的菜单,替代了3.12版本前的Page类型
|
||||
|
||||
// 文章列表相关设置
|
||||
CAN_COPY: process.env.NEXT_PUBLIC_CAN_COPY || true, // 是否允许复制页面内容 默认允许,如果设置为 false、则全栈禁止复制内容。
|
||||
CAN_COPY: process.env.NEXT_PUBLIC_CAN_COPY || true, // 是否允许复制页面内容 默认允许,如果设置为false、则全栈禁止复制内容。
|
||||
|
||||
// 侧栏布局 是否反转 (左变右,右变左) 已支持主题:hexo next medium fukasawa example
|
||||
// 侧栏布局 是否反转(左变右,右变左) 已支持主题: hexo next medium fukasawa example
|
||||
LAYOUT_SIDEBAR_REVERSE:
|
||||
process.env.NEXT_PUBLIC_LAYOUT_SIDEBAR_REVERSE || false,
|
||||
|
||||
// 欢迎语打字效果,Hexo,Matery 主题支持,英文逗号隔开多个欢迎语。
|
||||
// 欢迎语打字效果,Hexo,Matery主题支持, 英文逗号隔开多个欢迎语。
|
||||
GREETING_WORDS:
|
||||
process.env.NEXT_PUBLIC_GREETING_WORDS ||
|
||||
'Hi,我是一个程序员,Hi,我是一个打工人,Hi,我是一个干饭人,欢迎来到我的博客🎉',
|
||||
'Hi,我是一个程序员, Hi,我是一个打工人,Hi,我是一个干饭人,欢迎来到我的博客🎉',
|
||||
|
||||
// uuid 重定向至 slug
|
||||
// uuid重定向至 slug
|
||||
UUID_REDIRECT: process.env.UUID_REDIRECT || false
|
||||
}
|
||||
|
||||
module.exports = BLOG
|
||||
module.exports = BLOG
|
||||
@@ -19,7 +19,7 @@ module.exports = {
|
||||
BUNDLE_ANALYZER: process.env.ANALYZE === 'true' || false, // 是否展示编译依赖内容与大小
|
||||
VERSION: (() => {
|
||||
try {
|
||||
// 优先使用环境变量,否则从 package.json 中获取版本号
|
||||
// 优先使用环境变量,否则从package.json中获取版本号
|
||||
return (
|
||||
process.env.NEXT_PUBLIC_VERSION || require('../package.json').version
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ export { getPost } from '../notion/getNotionPost'
|
||||
export { getPage as getPostBlocks } from '../notion/getPostBlocks'
|
||||
|
||||
/**
|
||||
* 获取博客数据; 基于 Notion 实现
|
||||
* 获取博客数据; 基于Notion实现
|
||||
* @param {*} pageId
|
||||
* @param {*} from
|
||||
* @param {*} locale 语言 zh|en|jp 等等
|
||||
@@ -31,7 +31,7 @@ export async function getGlobalData({
|
||||
from,
|
||||
locale
|
||||
}) {
|
||||
// 获取站点数据,如果 pageId 有逗号隔开则分次取数据
|
||||
// 获取站点数据 , 如果pageId有逗号隔开则分次取数据
|
||||
const siteIds = pageId?.split(',') || []
|
||||
let data = EmptyData(pageId)
|
||||
|
||||
@@ -65,7 +65,7 @@ export async function getGlobalData({
|
||||
* @returns {Promise<JSX.Element|*|*[]>}
|
||||
*/
|
||||
export async function getSiteDataByPageId({ pageId, from }) {
|
||||
// 获取 NOTION 原始数据,此接支持 mem 缓存。
|
||||
// 获取NOTION原始数据,此接支持mem缓存。
|
||||
return await getOrSetDataWithCache(
|
||||
`site_data_${pageId}`,
|
||||
async (pageId, from) => {
|
||||
@@ -101,7 +101,7 @@ const EmptyData = pageId => {
|
||||
allPages: [
|
||||
{
|
||||
id: 1,
|
||||
title: `无法获取 Notion 数据,请检查 Notion_ID: \n 当前 ${pageId}`,
|
||||
title: `无法获取Notion数据,请检查Notion_ID: \n 当前 ${pageId}`,
|
||||
summary:
|
||||
'访问文档获取帮助 → https://docs.tangly1024.com/article/vercel-deploy-notion-next',
|
||||
status: 'Published',
|
||||
@@ -137,7 +137,7 @@ const EmptyData = pageId => {
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 Notion 数据转站点数据
|
||||
* 将Notion数据转站点数据
|
||||
* 这里统一对数据格式化
|
||||
* @returns {Promise<JSX.Element|null|*>}
|
||||
*/
|
||||
@@ -149,7 +149,7 @@ async function convertNotionToSiteData(pageId, from, pageRecordMap) {
|
||||
pageId = idToUuid(pageId)
|
||||
let block = pageRecordMap.block || {}
|
||||
const rawMetadata = block[pageId]?.value
|
||||
// Check Type Page-Database 和 Inline-Database
|
||||
// Check Type Page-Database和Inline-Database
|
||||
if (
|
||||
rawMetadata?.type !== 'collection_view_page' &&
|
||||
rawMetadata?.type !== 'collection_view'
|
||||
@@ -175,7 +175,7 @@ async function convertNotionToSiteData(pageId, from, pageRecordMap) {
|
||||
|
||||
if (pageIds?.length === 0) {
|
||||
console.error(
|
||||
'获取到的文章列表为空,请检查 notion 模板',
|
||||
'获取到的文章列表为空,请检查notion模板',
|
||||
collectionQuery,
|
||||
collection,
|
||||
collectionView,
|
||||
@@ -183,10 +183,10 @@ async function convertNotionToSiteData(pageId, from, pageRecordMap) {
|
||||
pageRecordMap
|
||||
)
|
||||
} else {
|
||||
// console.log('有效 Page 数量', pageIds?.length)
|
||||
// console.log('有效Page数量', pageIds?.length)
|
||||
}
|
||||
|
||||
// 抓取主数据库最多抓取 1000 个 blocks,溢出的数 block 这里统一抓取一遍
|
||||
// 抓取主数据库最多抓取1000个blocks,溢出的数block这里统一抓取一遍
|
||||
const blockIdsNeedFetch = []
|
||||
for (let i = 0; i < pageIds.length; i++) {
|
||||
const id = pageIds[i]
|
||||
@@ -369,21 +369,21 @@ function handleDataBeforeReturn(db) {
|
||||
p.date.time_zone
|
||||
)
|
||||
console.log(
|
||||
'[定时发布] 隐藏--> 文章:',
|
||||
'[定时发布] 隐藏--> 文章:',
|
||||
p.title,
|
||||
'当前时间戳:',
|
||||
'当前时间戳:',
|
||||
currentTimestamp,
|
||||
'目标时间戳:',
|
||||
'目标时间戳:',
|
||||
startTimestamp,
|
||||
'-',
|
||||
endTimestamp
|
||||
)
|
||||
console.log(
|
||||
'[定时发布] 隐藏--> 文章:',
|
||||
'[定时发布] 隐藏--> 文章:',
|
||||
p.title,
|
||||
'当前时间:',
|
||||
'当前时间:',
|
||||
new Date(),
|
||||
'目标时间:',
|
||||
'目标时间:',
|
||||
p.date
|
||||
)
|
||||
// 隐藏
|
||||
@@ -431,7 +431,7 @@ function cleanPages(allPages, tagOptions) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理一组数据的 id
|
||||
* 清理一组数据的id
|
||||
* @param {*} items
|
||||
* @returns
|
||||
*/
|
||||
@@ -449,7 +449,7 @@ function shortenIds(items) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理一组数据的 id
|
||||
* 清理一组数据的id
|
||||
* @param {*} items
|
||||
* @returns
|
||||
*/
|
||||
@@ -466,7 +466,7 @@ function cleanIds(items) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理和过滤 tagOptions
|
||||
* 清理和过滤tagOptions
|
||||
* @param {*} tagOptions
|
||||
* @returns
|
||||
*/
|
||||
@@ -482,7 +482,7 @@ function cleanTagOptions(tagOptions) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理 block 数据
|
||||
* 清理block数据
|
||||
*/
|
||||
function cleanBlock(item) {
|
||||
const post = deepClone(item)
|
||||
@@ -537,7 +537,7 @@ function getLatestPosts({ allPages, from, latestPostCount }) {
|
||||
|
||||
/**
|
||||
* 获取用户自定义单页菜单
|
||||
* 旧版本,不读取 Menu 菜单,而是读取 type=Page 生成菜单
|
||||
* 旧版本,不读取Menu菜单,而是读取type=Page生成菜单
|
||||
* @param notionPageData
|
||||
* @returns {Promise<[]|*[]>}
|
||||
*/
|
||||
@@ -625,7 +625,7 @@ function getCategoryOptions(schema) {
|
||||
function getSiteInfo({ collection, block, NOTION_CONFIG }) {
|
||||
const defaultTitle = NOTION_CONFIG?.TITLE || 'NotionNext BLOG'
|
||||
const defaultDescription =
|
||||
NOTION_CONFIG?.DESCRIPTION || '这是一个由 NotionNext 生成的站点'
|
||||
NOTION_CONFIG?.DESCRIPTION || '这是一个由NotionNext生成的站点'
|
||||
const defaultPageCover = NOTION_CONFIG?.HOME_BANNER_IMAGE || '/bg_image.jpg'
|
||||
const defaultIcon = NOTION_CONFIG?.AVATAR || '/avatar.svg'
|
||||
const defaultLink = NOTION_CONFIG?.LINK || BLOG.LINK
|
||||
@@ -658,7 +658,7 @@ function getSiteInfo({ collection, block, NOTION_CONFIG }) {
|
||||
// 站点网址
|
||||
const link = NOTION_CONFIG?.LINK || defaultLink
|
||||
|
||||
// 站点图标不能是 emoji
|
||||
// 站点图标不能是emoji
|
||||
const emojiPattern = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g
|
||||
if (!icon || emojiPattern.test(icon)) {
|
||||
icon = defaultIcon
|
||||
@@ -674,7 +674,7 @@ function getSiteInfo({ collection, block, NOTION_CONFIG }) {
|
||||
* @param {string} date.start_time - 开始时间(可选,格式:HH:mm)
|
||||
* @param {string} date.end_date - 结束日期(格式:YYYY-MM-DD)
|
||||
* @param {string} date.end_time - 结束时间(可选,格式:HH:mm)
|
||||
* @param {string} date.time_zone - 时区(IANA 格式,如 "Asia/Shanghai")
|
||||
* @param {string} date.time_zone - 时区(IANA格式,如 "Asia/Shanghai")
|
||||
* @returns {boolean} 是否在范围内
|
||||
*/
|
||||
function isInRange(title, date = {}) {
|
||||
@@ -812,8 +812,8 @@ function getTimestamp(date, time = '00:00', time_zone) {
|
||||
|
||||
/**
|
||||
* 获取导航用的精减文章列表
|
||||
* gitbook 主题用到,只保留文章的标题分类标签分类信息,精减掉摘要密码日期等数据
|
||||
* 导航页面的条件,必须是 Posts
|
||||
* gitbook主题用到,只保留文章的标题分类标签分类信息,精减掉摘要密码日期等数据
|
||||
* 导航页面的条件,必须是Posts
|
||||
* @param {*} param0
|
||||
*/
|
||||
export function getNavPages({ allPages }) {
|
||||
@@ -840,4 +840,4 @@ export function getNavPages({ allPages }) {
|
||||
publishDate: item.publishDate,
|
||||
ext: item.ext || {}
|
||||
}))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user