Sapper / Svelte:如何添加降价文件?

时间:2019-10-16 16:29:33

标签: markdown svelte sapper

我正在使用默认值为sapper-template-rollup的Sapper创建博客。

在blog文件夹中,确实提到了从markdown文件生成数据。但是我找不到方法吗?

4 个答案:

答案 0 :(得分:1)

您可能会发现this repo有帮助。我在Sapper Template存储库上还有一个open PR,首先是在2019年1月修改了旧的Markdown分支,然后在2019年5月添加了Svelte 3支持,但是看起来和克隆my repo on GitLab可能更容易,加上它还有更多我尚未添加到PR的当前依赖项更新。

答案 1 :(得分:1)

我接受@Antony Jones的方法。我将.md文件放在路由/文件夹中,并使用了Svelte Preprocess Markdown,并将其设置在汇总配置中以处理.md文件(将它们转换为.svelte文件)。 .md文件被组织在route /文件夹中的子文件夹中,并且每个文件夹都有一个索引页,该索引页将列出到由内部文件或文件夹构成的页面的链接。如果您想签出该仓库,请参见以下链接:link。这项工作仍在进行中。

但是,正如@rdela在他的评论中所说,这种方法不如使用您自己的代码来处理帖子来获取主题(如模板存储库中所做的那样),然后过滤帖子并将其放入基于文件夹的方式灵活得多。标签或标签之类的东西。

答案 2 :(得分:1)

我发布了https://github.com/mikenikles/sapper-template-with-markdown,其中显示了如何使用默认的Sapper模板,但使用*.md文件作为博客文章内容。

主要更改是在src/routes/blog/_posts.js中,我将内容替换为:

const fs = require('fs');
const frontMatter = require('front-matter');
const marked = require('marked');

const posts = fs.readdirSync('./src/posts').map(postFilename => {
  const postContent = fs.readFileSync(`./src/posts/${postFilename}`, {
    encoding: 'utf8'
  });
  const postFrontMatter = frontMatter(postContent);
  return {
    title: postFrontMatter.attributes.title,
    slug: postFrontMatter.attributes.slug,
    html: marked(postFrontMatter.body)
  }
});

posts.forEach(post => {
    post.html = post.html.replace(/^\t{3}/gm, '');
});

export default posts;

然后,每篇博客文章都作为Markdown文件存储在src/posts中,格式如下:

---
title: 'What is Sapper?'
slug: 'what-is-sapper'
---

Your markdown content.

答案 3 :(得分:0)

使用MDsveX(这是由核心社区成员之一创建的Svelte Markdown处理器)可能会带来更多乐趣。

但是,是的,您也可以只使用markedsnarkdown(这就是我使用的方式),就像使用其他任何库一样-只需将其导入并将markdown代码传递给它。