# Support for assets in plugins

**URL:** <https://forum.obsidian.md/t/support-for-assets-in-plugins/25837>\
**Category:** Devs: Plugins & API\
**Tags:** plugin-release\
**Created:** [October 19, 2021, 2:26pm UTC](https://forum.obsidian.md/t/support-for-assets-in-plugins/25837 "2021-10-19T14:26:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![JeppeKlitgaard](https://forum.obsidian.md/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@JeppeKlitgaard](https://forum.obsidian.md/u/JeppeKlitgaard)\
**Post date:** [October 19, 2021, 2:26pm UTC](https://forum.obsidian.md/t/support-for-assets-in-plugins/25837/1 "2021-10-19T14:26:10Z")

</div>

I think it would be nice to have a way of including static files in plugin releases without having to inline them in the `main.js` file.

Proposal:

- `assets.zip` would be downloaded from the GitHub release if present and extracted into `.obsidian/plugins/{PLUGIN_NAME}/assets`
- API call to make reading from the folder convenient (`this.plugin.readAsset(relPath: string): TFile`)?

Security shouldn’t be much of a concern since plugins can already execute arbitrary code.

---

<div class="post-metadata">

**Author:** ![JeppeKlitgaard](https://forum.obsidian.md/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@JeppeKlitgaard](https://forum.obsidian.md/u/JeppeKlitgaard)\
**Post date:** [October 23, 2021, 12:39pm UTC](https://forum.obsidian.md/t/support-for-assets-in-plugins/25837/2 "2021-10-23T12:39:07Z")

</div>

Use cases:

- Including example markdown files with plugin
- Including images and other static resources needed for the plugin

---

<div class="post-metadata">

**Author:** ![kinghand](https://forum.obsidian.md/user_avatar/forum.obsidian.md/kinghand/32/32497_2.png) [@kinghand](https://forum.obsidian.md/u/kinghand)\
**Post date:** [July 23, 2022, 4:43pm UTC](https://forum.obsidian.md/t/support-for-assets-in-plugins/25837/3 "2022-07-23T16:43:02Z")

</div>

try this:

```nohighlight
export function buildPluginStaticResourceSrc(plug: Plugin_2, assetPath: string) {
  return plug.app.vault.adapter.getResourcePath(pathJoin(plug.app.vault.configDir, "plugins", plug.manifest.id, assetPath))
}

/* usage */
element.createEl("img", { attr: { src: buildPluginStaticResourceSrc(this, "example.png") }});

```
