1.0.0-rc.72 • Published 12 months ago

@vuepress-plume/plugin-auto-frontmatter v1.0.0-rc.72

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

@vuepress-plume/plugin-auto-frontmatter

自动生成 *.md 文件的 frontmatter 配置。

Install

npm install @vuepress-plume/plugin-auto-frontmatter
# or
pnpm add @vuepress-plume/plugin-auto-frontmatter
# or
yarn add @vuepress-plume/plugin-auto-frontmatter

Usage

// .vuepress/config.[jt]s
import { autoFrontmatterPlugin } from '@vuepress-plume/plugin-auto-frontmatter'

export default {
  // ...
  plugins: [
    autoFrontmatterPlugin({
      formatter: {
        createTime(formatTime, file, matter) {
          if (formatTime)
            return formatTime
          return file.createTime
        }
      }
    })
  ]
  // ...
}

autoFrontmatterPlugin([options])

options

{ include?: string | string[]; exclude?: string | string[]; formatter: Formatter }

  • include include 匹配字符串或数组,匹配需要自动生成 frontmatter 的 md文件。 默认预设为 ['**/*.md']

  • exclude exclude 排除不需要的文件 默认预设为: ['!.vuepress/', '!node_modules/']

  • formatter 配置frontmatter每个字段的生成规则。

    interface MarkdownFile {
      filepath: string
      relativePath: string
      content: string
      createTime: Date
      stats: fs.Stats
    }
    
    interface FormatterFn<T = any, K = object> {
      (value: T, file: MarkdownFile, data: K): T
    }
    
    type FormatterObject<K = object, T = any> = Record<
      string,
      FormatterFn<T, K>
    >
    
    type FormatterArray = {
      include: string | string[]
      formatter: FormatterObject
    }[]
    
    type Formatter = FormatterObject | FormatterArray
    
    /**
     * formatterObj 对象中的 key 即为 frontmatter 配置中的key
     * 其方法返回的值将作为 frontmatter[key] 的值
     * .md
     * ---
     * createTime: 2022-03-26T11:46:50.000Z
     * ---
     */
    const formatterObj: Formatter = {
      createTime(formatTime, file, matter) {
        if (formatTime)
          return formatTime
        return file.createTime
      }
    }
    
    const formatterArr: Formatter = [
      {
        // 更精细化的匹配某个 md文件,支持glob 匹配字符串
        include: '**/{README,index}.md',
        // formatter 仅对 glob命中的文件有效
        formatter: {
          home(value, file, matter) {
            return value
          }
        },
      },
      {
        // 通配,如果文件没有被其他精细glob命中,
        // 则使用 通配 formatter
        // 如果是数组,必须有且用一个 include 为 * 的 项
        include: '*',
        formatter: {
          title(title) {
            return title || '默认标题'
          }
        }
      }
    ]

Why ?

  • 为什么需要这个插件?

    有时候在开发一些主题时,期望使用户更专注于内容的编写,尽可能减少配置性的工作,可以将一些重复性的必要的配置 直接通过本插件自动生成。

1.0.0-rc.71

12 months ago

1.0.0-rc.70

1 year ago

1.0.0-rc.68

1 year ago

1.0.0-rc.67

1 year ago

1.0.0-rc.66

1 year ago

1.0.0-rc.65

1 year ago

1.0.0-rc.69

1 year ago

1.0.0-rc.72

12 months ago

1.0.0-rc.64

1 year ago

1.0.0-rc.63

1 year ago

1.0.0-rc.62

1 year ago

1.0.0-rc.60

1 year ago

1.0.0-rc.57

1 year ago

1.0.0-rc.59

1 year ago

1.0.0-rc.58

1 year ago

1.0.0-rc.61

1 year ago

1.0.0-rc.56

1 year ago

1.0.0-rc.55

1 year ago

1.0.0-rc.54

1 year ago

1.0.0-rc.53

1 year ago

1.0.0-rc.52

1 year ago

1.0.0-rc.51

1 year ago

1.0.0-rc.50

1 year ago

1.0.0-rc.49

1 year ago

1.0.0-rc.48

1 year ago

1.0.0-rc.47

1 year ago

1.0.0-rc.46

1 year ago

1.0.0-rc.45

1 year ago

1.0.0-rc.44

1 year ago

1.0.0-rc.43

1 year ago

1.0.0-rc.42

1 year ago

1.0.0-rc.41

1 year ago

1.0.0-rc.40

1 year ago

1.0.0-rc.39

1 year ago

1.0.0-rc.38

1 year ago

1.0.0-rc.37

1 year ago

1.0.0-rc.36

1 year ago

1.0.0-rc.35

1 year ago

1.0.0-rc.34

1 year ago

1.0.0-rc.33

1 year ago

1.0.0-rc.32

1 year ago

1.0.0-rc.31

1 year ago

1.0.0-rc.30

1 year ago

1.0.0-rc.29

1 year ago

1.0.0-rc.28

1 year ago

1.0.0-rc.27

1 year ago

1.0.0-rc.26

1 year ago

1.0.0-rc.25

1 year ago

1.0.0-rc.24

1 year ago

1.0.0-rc.23

1 year ago

1.0.0-rc.20

1 year ago

1.0.0-rc.22

1 year ago

1.0.0-rc.21

1 year ago

1.0.0-rc.17

1 year ago

1.0.0-rc.16

1 year ago

1.0.0-rc.19

1 year ago

1.0.0-rc.18

1 year ago

1.0.0-rc.15

1 year ago

1.0.0-rc.14

1 year ago

1.0.0-rc.13

1 year ago

1.0.0-rc.12

1 year ago

1.0.0-rc.11

1 year ago

1.0.0-rc.9

1 year ago

1.0.0-rc.8

1 year ago

1.0.0-rc.10

1 year ago

1.0.0-rc.7

1 year ago

1.0.0-rc.5

1 year ago

1.0.0-rc.6

1 year ago

1.0.0-rc.4

1 year ago

1.0.0-rc.3

2 years ago

1.0.0-rc.2

2 years ago

1.0.0-rc.1

2 years ago

1.0.0-rc.0

2 years ago

1.0.0-beta.89

2 years ago