Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用“.js”文件从“.mdx”文件读取“frontmatter”中的值_Javascript_Node.js_Next.js_Mdxjs - Fatal编程技术网

Javascript 使用“.js”文件从“.mdx”文件读取“frontmatter”中的值

Javascript 使用“.js”文件从“.mdx”文件读取“frontmatter”中的值,javascript,node.js,next.js,mdxjs,Javascript,Node.js,Next.js,Mdxjs,我想用它来生成站点地图 但是,当我正常使用它时,如: next-sitemap.js module.exports={ 站点URL:'https://example.com', generateRobotsTxt:对, } 它为我的所有帖子生成站点地图 尽管如此,在我的.mdx文件中,我有一个已发布键,可以知道这篇文章是草稿还是准备发布,比如: export const meta = { title: 'Hello World', date: '2020-09-11T14:54

我想用它来生成站点地图

但是,当我正常使用它时,如:

next-sitemap.js
module.exports={
站点URL:'https://example.com',
generateRobotsTxt:对,
}
它为我的所有帖子生成站点地图

尽管如此,在我的
.mdx
文件中,我有一个
已发布
键,可以知道这篇文章是
草稿
还是准备发布,比如:

export const meta = {
    title: 'Hello World',
    date: '2020-09-11T14:54:37.229Z',
    tags: ['hello', 'world'],
    author: 'Akshay Kadam',
    published: false,
}

# Hello World

This is my first blog post, not yet ready to be published
如何从
.mdx
文件中读取
published
键,以便仅生成
published:true
帖子的站点地图


注意:我无法使用,因为我的
.mdx
文件有一个导出的对象作为元数据。

我使用了一个自定义的站点地图生成器,如:

脚本/build-sitemap.js
const fs=require('fs'))
常量glob=require('fast-glob')
const prettier=require('prettier')
const{getAllPublishedSays}=require('@/utils/article/getAllEssayPreviews')
const{getAllPublishedTutorials}=require('@/utils/tutorial/getAllTutorialPreviews')
const posts=[…GetAllPublishedSays(),…GetAllPublishedAutorials()]
常量配置={
站点URL:'https://akshaykadam.com',
changefreq:“每日”,
优先级:“0.7”,
lastmod:new Date().toISOString(),
}
const robotsTxt=`
用户代理:*
允许:/
主机:${config.siteUrl}
站点地图:${config.siteUrl}/Sitemap.xml
`.trim()
常量main=async()=>{
const prettierConfig=wait prettier.resolveConfig('./prettier.config.js')
常数站点地图=`
${员额
.map((post)=>{
返回`
${`${config.siteUrl}/${post.slug}`}
${`${config.changefreq}`}
${`${config.priority}`}
${`${config.lastmod}`}
`
})
.join(“”)}
`
const formatted=prettier.format(站点地图{
…prettierConfig,
语法分析器:“html”,
})
fs.writeFileSync('public/sitemap.xml',格式化)
fs.writeFileSync('public/robots.txt',robotsTxt)
}
main()
getAllEssayPreviews.ts
我使用了自定义的站点地图生成器,如:

脚本/build-sitemap.js
const fs=require('fs'))
常量glob=require('fast-glob')
const prettier=require('prettier')
const{getAllPublishedSays}=require('@/utils/article/getAllEssayPreviews')
const{getAllPublishedTutorials}=require('@/utils/tutorial/getAllTutorialPreviews')
const posts=[…GetAllPublishedSays(),…GetAllPublishedAutorials()]
常量配置={
站点URL:'https://akshaykadam.com',
changefreq:“每日”,
优先级:“0.7”,
lastmod:new Date().toISOString(),
}
const robotsTxt=`
用户代理:*
允许:/
主机:${config.siteUrl}
站点地图:${config.siteUrl}/Sitemap.xml
`.trim()
常量main=async()=>{
const prettierConfig=wait prettier.resolveConfig('./prettier.config.js')
常数站点地图=`
${员额
.map((post)=>{
返回`
${`${config.siteUrl}/${post.slug}`}
${`${config.changefreq}`}
${`${config.priority}`}
${`${config.lastmod}`}
`
})
.join(“”)}
`
const formatted=prettier.format(站点地图{
…prettierConfig,
语法分析器:“html”,
})
fs.writeFileSync('public/sitemap.xml',格式化)
fs.writeFileSync('public/robots.txt',robotsTxt)
}
main()
getAllEssayPreviews.ts
export const getAllPublishedEssays = (): Array<{
    slug: string
    module: any
}> =>
    importAll(require.context('../../pages/essay/?rss', true, /\.mdx$/))
        .filter((p: Post) => p.module.meta.published)
        .sort((a: Post, b: Post) => dateSortDesc(a.module.meta.date, b.module.meta.date))