plugins - Docusaurus:在加载内容期间写入文件系统是插件的不良做法吗?
问题描述
我想使用“docs”插件和自定义(JavaScript)插件将文档连接到无头 CMS 来填充我的 Docusaurus 项目。目前,我正在使用loadContent Lifecycle API 事件来调用我的 Headless CMS API,然后使用fs.writeFileSync在“/docs”中创建物理降价文件并覆盖 ./sidebars.js 文件,因此“docs”插件随之而来与经典的预设作品。
./my-plugin/index.js:
module.exports = function (context, options) {
return {
name: 'my-docusaurus-plugin',
async loadContent() {
//calls to Headless CMS API for documentation content
let response = await fetchArticles('documentation');
// Adds the markdown files for 'docs' plugin using fs.writeFileSync
await buildArticles(response)
//fetch homepage and navigation sections from CMS API
let homepage = await fetchPages('homepage');
let sidebarSection = await fetchPages('page');
//overwrite ./sidebars.js with API navigation data using fs.writeFileSync
await buildSidebar(homepage, sidebarSection);
}
};
};
这是因为我从我的 CMS 和文档渲染中获取内容,但它似乎更像是一种解决方法,而不是用于将无头 CMS 与 Docusaurus 连接的优雅解决方案。我是否缺少一些最佳实践,或者是否有更好的方法使用其他生命周期事件?
解决方案
推荐阅读
- javascript - 我的电子应用程序在构建时显示白屏
- oracle - oracle中按行数范围求和
- sql-server - tsql for xml path 插入多个相同命名的行
- graphics - 如何让图片融入背景
- asp.net - 在aspnet核心中将原始html从文件复制到剃须刀页面?
- sql - Scala如何根据条件将列表拆分为N个列表
- r - 使用列表中的名称作为新创建的数据框的名称(使用分配),但也希望将该名称用于其中的变量
- laravel - laravel 8 的 CKFinder 身份验证问题
- ruby-on-rails - 设计 - 一种用户类型无法登录
- c - 调整结构大小并移动指针后,指针没有显示到他应该指向的地址