Contentlayer 快速入门及最佳实践
1. 项目介绍
Contentlayer 是一款用于将内容转化为类型安全JSON数据的SDK,主要用于应用程序中的页面内容管理。它支持实时重载内容变化、增量构建以及简单的但功能强大的API。目前Contentlayer处于beta阶段,即将推出稳定的1.0版本。
2. 项目快速启动
安装依赖
首先,确保您已经安装了Node.js
和 npm
或 pnpm
。接着,在您的项目中安装Contentlayer及其相关依赖:
npm install --save @contentlayer/core next-contentlayer
# 或者使用pnpm
pnpm add --save @contentlayer/core next-contentlayer
初始化配置
创建一个名为contentlayer.config.js
的文件,并配置Contentlayer以读取Markdown文件:
import { createContentLayer } from 'next-contentlayer';
export default createContentLayer({
sources: [
{
name: 'pages',
files: ['content/**/*.md', 'content/**/*.mdx'],
},
],
});
集成到Next.js应用
在Next.js的pages/api/contentlayer/[...slug].js
文件中设置Contentlayer API:
import { request } from 'graphql-request';
import contentlayer from '../contentlayer.config';
const handler = async (req, res) => {
const { slug } = req.query;
const result = await contentlayer.get consultarion({ slug });
res.status(200).json(result);
};
export default handler;
设置Markdown解析器
安装Markdown解析插件,例如rehype-katex
和 rehype-stringify
:
npm install --save rehype-katex rehype-stringify @mdx-js/mdx
# 或者使用pnpm
pnpm add --save rehype-katex rehype-stringify @mdx-js/mdx
然后在next.config.js
文件中配置MDX解析器:
const withMDX = require('@next/mdx')({
extension: /\.mdx?$/,
options: {
mdxOptions: {
remarkPlugins: [],
rehypePlugins: [require('rehype-katex')],
},
},
});
module.exports = withMDX({
pageExtensions: ['js', 'jsx', 'md', 'mdx'],
});
启动Next.js应用
最后,启动你的Next.js应用:
npm run dev
# 或者
pnpm run dev
现在您可以访问 http://localhost:3000/your-page-slug
来查看由Contentlayer动态生成的页面。
3. 应用案例和最佳实践
- 多语言站点: 结合i18n库,Contentlayer可以轻松地支持多语言内容。
- CMS集成: 将Contentlayer与Headless CMS(如Contentful、Prismic)结合,实现动态内容加载。
- SEO优化: 通过Contentlayer获取元数据,可以方便地实现SEO友好的页面。
- 动态路由: 利用Contentlayer的API动态生成基于Markdown的路由。
4. 典型生态项目
- next-mdx-remote: 用于远程MDX解析的Next.js库,可与Contentlayer结合使用。
- rehype plugins: 如
rehype-autolink-headings
,rehype-slug
等,提升Markdown内容的可读性和用户体验。 - MDX components: 根据需求创建自定义React组件以增强Markdown的呈现效果。
通过这些案例和生态项目,Contentlayer可以在各种场景下发挥其强大的作用,提高内容管理和动态生成的效率。