Simple, persistent key-value store.
This plugin requires a Rust version of at least 1.65
There are three general methods of installation that we can recommend.
Install the Core plugin by adding the following to your Cargo.toml
file:
src-tauri/Cargo.toml
```toml [dependencies] tauri-plugin-store = "2.0.0-alpha"
tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } ```
You can install the JavaScript Guest bindings using your preferred JavaScript package manager:
Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use.
```sh pnpm add @tauri-apps/plugin-store
npm add @tauri-apps/plugin-store
yarn add @tauri-apps/plugin-store
pnpm add https://github.com/tauri-apps/tauri-plugin-store#v2
npm add https://github.com/tauri-apps/tauri-plugin-store#v2
yarn add https://github.com/tauri-apps/tauri-plugin-store#v2 ```
First you need to register the core plugin with Tauri:
src-tauri/src/main.rs
rust
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_store::Builder::default().build())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
Afterwards all the plugin's APIs are available through the JavaScript guest bindings:
```javascript import { Store } from "@tauri-apps/plugin-store";
const store = new Store(".settings.dat");
await store.set("some-key", { value: 5 });
const val = await store.get("some-key"); assert(val, { value: 5 });
await store.save(); // this manually saves the store, otherwise the store is only saved when your app is closed ```
Values added to the store are not persisted between application loads unless:
store.save()
)You can also access Stores from Rust, you can create new stores:
```rust use tauripluginstore::StoreBuilder; use serde_json::json;
fn main() { tauri::Builder::default() .plugin(tauripluginstore::Builder::default().build()) .setup(|app| { let mut store = StoreBuilder::new(app.handle(), "path/to/store.bin".parse()?).build();
store.insert("a".to_string(), json!("b")) // note that values must be serd_json::Value to be compatible with JS
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
} ```
As you may have noticed, the Store crated above isn't accessible to the frontend. To interoperate with stores created by JS use the exported with_store
method:
```rust use tauri::Wry; use tauripluginstore::with_store;
let stores = app.state::
withstore(apphandle, stores, path, |store| store.insert("a".to_string(), json!("b"))) ```
PRs accepted. Please make sure to read the Contributing Guide before making a pull request.
Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.
MIT or MIT/Apache 2.0 where applicable.