/obsidian-vault-parser

Vault parser for the Obsidian note taking app

Primary LanguageTypeScriptMIT LicenseMIT

obsidian-vault-parser

CI

Vault parser for the Obsidian note taking app.

Usage

Read an Obsidian vault from a path

import { readVault } from "obsidian-vault-parser"

const vault = readVault("./path/to/vault")
console.log(vault)

obsidian-vault-parser also has the ability to only include files that are published. You can pass an isPublished predicate in as an option. Files that do not pass this predicate will not be included in the vault.

import { readVault } from "obsidian-vault-parser"

const vault = readVault("./path/to/vault", {
  isPublished: file => file.frontMatter.published != null
})

Documentation

Vault

Represents an entire Obsidian vault.

export interface Vault {
  path: string;
  files: Record<string, VaultPage>;
  config: VaultConfig;
}

VaultConfig

Parsed contents of .obsidian/config.

export interface VaultConfig {
  theme?: string;
  vimMode?: boolean;
  attachmentFolderPath?: string;
  pluginEnabledStatus?: any;
}

VaultFile

Represents an individual file inside of a vault.

export interface VaultPage {
  path: string;
  name: string;
  tags: string[];
  links: string[];
  backLinks: string[];
  frontMatter: Record<string, any>;
  content: string;
  createdAt: number;
  updatedAt: number;
}

path

Absolute path to the file.

name

Name of the file that can be referenced by other files in the vault. This must be unique across the vault.

e.g. file with path ./foo/bar.md is bar.

tags

A list of #tags found in the file

links

Names of other files that this file [[links]] to with.

backLinks

Names of other files that link to this file.

frontMatter

Front matter parsed from the top of the file.

content

String content of the document with front matter removed.

createdAt

Birthtime of file in milliseconds.

updatedAt

Last modified date of file in milliseconds.

readVault(path: string) => Vault

Read an Obsidian Vault from a file path.

TypeScript

TypeScript types are included with this library.

Test

Run all tests

yarn test

This project was bootstrapped with tsdx.