Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/coffee-cup/obsidian-vault-parser

Vault parser for the Obsidian note taking app
https://github.com/coffee-cup/obsidian-vault-parser

obsidian-md parser vault

Last synced: 3 months ago
JSON representation

Vault parser for the Obsidian note taking app

Awesome Lists containing this project

README

        

# obsidian-vault-parser

![CI](https://github.com/coffee-cup/obsidian-vault-parser/workflows/CI/badge.svg)
[![](https://img.shields.io/npm/v/obsidian-vault-parser?style=flat-square)](https://www.npmjs.com/package/obsidian-vault-parser)
[![](https://img.shields.io/github/license/coffee-cup/obsidian-vault-parser?style=flat-square&color=brightgreen)](https://github.com/coffee-cup/obsidian-vault-parser/blob/main/LICENSE)

Vault parser for the [Obsidian](https://obsidian.md/) note taking app.

## Usage

Read an Obsidian vault from a path

```ts
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.

```ts
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.

```ts
export interface Vault {
path: string;
files: Record;
config: VaultConfig;
}
```

### `VaultConfig`

Parsed contents of `.obsidian/config`.

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

### `VaultFile`

Represents an individual file inside of a vault.

```ts
export interface VaultPage {
path: string;
name: string;
tags: string[];
links: string[];
backLinks: string[];
frontMatter: Record;
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](https://jekyllrb.com/docs/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](https://github.com/formium/tsdx).