0.1.14 • Published 2 years ago

markedpage v0.1.14

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

MarkedPage

A Markdown provider for my sveltekit static blog.

Features

  • Markdown source provide
  • Customize Classification
  • Support <!-- more --> tag, it will add excerpt into frontmatter
  • Use marked to parse markdown context.

Usage

  1. Create ./src/site.config.js to configure setting.
const config = {
  title: 'TestWebSite',
  classifier: [
    { id: 'post', params: { path: '/_posts/' }, type: 'directory' },
    { id: 'tag', params: { keys: ['tag', 'tags'] }, type: 'frontmatter' }
  ],
  marked: {
    options: {},
    extensions: {}
  }
};

export default config;
  1. Create ./docs/_posts/2022-04-28-post1.md and put markdown files in it.
/
|_docs
  |_posts
    |_2022-04-28-post1.md
  1. Use getPage or classifiedSet to get page context or page list in endpoints.
// example.ts
import type { DirectoryClassifierResult } from 'markedpage';
import { getPage, classifiedSet } from 'markedpage';
import type { RequestHandler } from '@sveltejs/kit';

export const get: RequestHandler = async () => {
  // Get list.
  const pageSet: DirectoryClassifierResult = await classifiedSet('post');
  const pages = pageSet.pages;
  // Get page.
  const page = await getPage('post1');
  const context = await page.render();

  return {
    body: {
      pages: pages,
      metadata: page.frontMatter,
      body: context
    }
  };
};

Example

<!-- 2022-04-28-firstpage.md -->

title: FirstPost
tags:
- test
---

This is summary field.

<!-- more -->

This is context block.

It will be passed to

{
  frontMatter: {
    title: 'FirstPost',
    tags: [ 'test' ],
    excerpt: 'This is summary field.',
    created: 2022-04-28T00:00:00.000Z
  },
  sourcePath: 'docs/2022-04-28-firstpage.md',
  indexPath: 'docs/2022-04-28-firstpage',
  render: [Function: render],
  raw: [Function: raw],
  slugKey: 'firstpage'
}

Markdown Vite HMR Support

  • Add markedpageVitePlugin() to config.plugins
// vite.config.js
import { sveltekit } from '@sveltejs/kit/vite';
import { markedpageVitePlugin } from 'markedpage';

import siteConfig from './src/site.config.js';

/** @type {import('vite').UserConfig} */
const config = {
	plugins: [sveltekit(), markedpageVitePlugin(siteConfig)]
};

export default config;
  • Listen to onContentUpdate and update the endpoint with invalidate.
// src/routes/
<script lang="ts">
  import { invalidate } from '$app/navigation';
  import { page } from '$app/stores';
  import { onContentUpdate } from 'markedpage/helper';
  
  onContentUpdate((payload) => {
      let slug = $page.params.slug;
      // update endpoint data.
      invalidate(`/api/posts.json`);
      invalidate(`/api/posts/${slug}.json`);
  });
</script>

Example

https://github.com/saweima12/markedpage-example

ChangeLog

  • 2022-08-22 v0.1.14 - breakingMove onContentUpdate to markedpage/helper [issues]
  • 2022-08-18 v0.1.13 - Optimize markdown file reload.
  • 2022-07-22 v0.1.10 - Fix: marked config is not loaded properly
  • 2022-07-22 v0.1.8 - Add support for site.config.js auto-reload via configuration
  • 2022-07-18 v0.1.7 - Replace chalk.js with kleur
  • 2022-07-16 v0.1.5 - Add markdown file Vite HMR Support.
  • 2022-05-31 Add _draft field support in FrontMatter.(It will not be added to list in production)
  • 2022-05-27 Add extendPageData support
0.1.14

2 years ago

0.1.13-next.1

2 years ago

0.1.13-next.2

2 years ago

0.1.13-next.3

2 years ago

0.1.13-next.4

2 years ago

0.1.13-next.5

2 years ago

0.1.13-next.6

2 years ago

0.1.13-next.7

2 years ago

0.1.10

2 years ago

0.1.11

2 years ago

0.1.12

2 years ago

0.1.13

2 years ago

0.0.197

2 years ago

0.0.198

2 years ago

0.1.0

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.9

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.0.15

2 years ago

0.0.16

2 years ago

0.0.17

2 years ago

0.0.18

2 years ago

0.0.19

2 years ago

0.0.1-9.4

2 years ago

0.0.1-9.3

2 years ago

0.0.1-9.2

2 years ago

0.0.13

2 years ago

0.0.1-9.1

2 years ago

0.0.14

2 years ago

0.1.11-next.3

2 years ago

0.1.11-next.4

2 years ago

0.1.11-next.1

2 years ago

0.0.1-9.6

2 years ago

0.1.11-next.2

2 years ago

0.0.1-9.5

2 years ago

0.1.11-next.5

2 years ago

0.1.11-next.6

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago