Как я могу создавать RSS-каналы для каждого автора?

#javascript #reactjs #rss #gatsby

Вопрос:

На моем сайте «Гэтсби» я пытаюсь создать RSS-каналы для каждого автора. Тем не менее, это оказывается непросто. Проблема в том, что я не могу передать какие-либо переменные данные в output раздел, в котором находился бы мой желаемый RSS-путь. Например: вывод: blog/feed-${authorName}-posts.xml . Теоретически это приведет к созданию RSS-канала для каждого автора.

Кому-нибудь это удалось? Я ценю любой совет.

РЕДАКТИРОВАТЬ: Я использую gatsby-plugin-feed плагин для создания RSS-канала. https://www.gatsbyjs.com/plugins/gatsby-plugin-feed/

Вот мой код до сих пор:

 const blogAuthor = {
  serialize: ({ query: { site, allContentfulAuthor } }) => {
    return allContentfulAuthor.nodes.map(author => {
      return Object.assign(
        {},
        {},
        {
          custom_elements: [
            { 'dc:creator': author.name },
            {
              posts: author.blog___post?.map(post => ({
                title: post.title,
                description: post.description.description,
                date: post.date,
                url: site.siteMetadata.siteUrl   '/blog/'   post.slug,
              })),
            },
          ],
          description: author.description,
        },
      );
    });
  },
  query: `
    {
      allContentfulAuthor(sort: {order: ASC, fields: name}) {
        nodes {
          name
          description
            blog___post {
            slug
            title
            date
            categories {
              name
            }
            description {
              description
            }
            author {
              name
              description
            }
          }
        }
      }
    }
  `,
  output: `blog/feed-${authorName}-posts.xml`,
  title: `Aiven Blog | ${authorName}`,
  match: `^/blog-${authorName}-posts/`,
};
 

Комментарии:

1. Вы не указываете, как вы создаете свои RSS-каналы. Похоже, вы используете плагин, которому не хватает достаточной конфигурации. Вероятно, проще просто генерировать каналы, используя более универсальные библиотеки, и fs.writeFile записывать их на диск вместо того, чтобы ограничиваться плагином.

2. @coreyward Спасибо за ваш комментарий! Ты правильно подметил. Я использую плагин. Это называется gatsby-plugin-feed . Я только что обновил вопрос. Я новичок в создании RSS-каналов. Вы упомянули библиотеки общего назначения и fs.writeFile . У вас есть какие-нибудь примеры, на которые можно посмотреть? Или вам приходят на ум какие-то конкретные библиотеки? Спасибо за вашу помощь!

3. Я уже много раз пользовался этим .

4. Это fs.writeFile было как раз то, что мне было нужно. Я последовал этому примеру, чтобы начать: geeksforgeeks.org/node-js-fs-writefile-method .