首页 > 解决方案 > 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 连接的优雅解决方案。我是否缺少一些最佳实践,或者是否有更好的方法使用其他生命周期事件?

标签: pluginsdocusaurus

解决方案


推荐阅读