# pinia-persist-own

> pinia 持久化插件, 可加密

Latest version **0.2.0** (published 2025-03-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install pinia-persist-own
pnpm add pinia-persist-own
yarn add pinia-persist-own
bun add pinia-persist-own
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2025-03-05 |
| First published | 2022-08-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 7.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | lyu |
| Maintainers | long_ago |
| Keywords | pinia, pinia-plugin, pinia-plugin-persist, persist, pinia-persist, pinia-persist-own |

## Links

- npm: https://www.npmjs.com/package/pinia-persist-own
- Repository: https://github.com/lx11573/pinia-persist-own
- Homepage: https://github.com/lx11573/pinia-persist-own#readme
- Issues: https://github.com/lx11573/pinia-persist-own/issues
- npm.io page: https://npm.io/package/pinia-persist-own

## Dependencies (1)

- [pinia](https://npm.io/package/pinia.md) ^2.0.17

## Recent versions

- 0.2.0 (latest) — 2025-03-05
- 0.1.1 — 2023-07-18
- 0.1.0 — 2023-07-18
- 0.0.9 — 2023-07-17
- 0.0.8 — 2022-12-10
- 0.0.7 — 2022-12-08
- 0.0.6 — 2022-10-22
- 0.0.5 — 2022-08-11
- 0.0.4 — 2022-08-10
- 0.0.3 — 2022-08-10
- 0.0.2 — 2022-08-10
- 0.0.1 — 2022-08-10

## README

<!--
 * @Author: lyu
 * @Date: 2022-08-10 16:57:21
-->
<h1 align="center"><samp>Pinia Persist Own</samp></h1>

<p align="center">
  <samp>一个Pinia的数据持久化插件</samp>
</p>

# 使用

## 安装

```bash
# npm
npm i pinia-persist-own
# pnpm
pnpm add pinia-persist-own
```

## 使用

```js
import { persist, createPersist } from 'pinia-persist-own'
import { createPinia } from 'pinia'

const pinia = createPinia()

// 这里传入的是公共参数，每个 store 均共享此参数
const createPersist = persist(/* 可进行传递通用参数 */)

/**
 * 如果不想进行统一设置参数的话，可以直接使用导出的 'createPersist' 
 * 每个 store 均可以进行单独进行配置，单独的配置要优先于公用配置
 * 
 */

// 添加持久化
pinia.use(createPersist)

app.use(pinia)
```

## 通用参数
- 类型： Object

  ```js
  options = { 
		// 使用何种方式进行持久化, 默认: sessionStorage
		storage: window.sessionStorage
		// 持久化时，是否启用加密，需自行加密, 默认: false
		// 当 useCrypt 为 true 时，加密解密方法必传
		useCrypt: false,
		// 加密数据方法
		encrypt: (data /* 待加密数据 */) => {
			// 加密实现
		},
		decrypt: (secretData) => {
			// 解密实现
		}
	}
  ```

## 私有参数

```ts
import { defineStore } from 'pinia' 

interface PersistProps{
	// 持久化名称
	name?: string;
	// 需要进行单独持久化的 keys => state 中的 key 集合
	keys?: string[];
	// 持久化方式，localStorage 和 sessionStorage 
	// 或者自行实现，自行实现 Storage 时，注意要实现的方法
	storage?: Storage;
	// 是否使用加密进行存储
	useCrypt?: false;
	// 加密方法
	encrypt?: (data: string) => string;
	// 解密方法
	decrypt?: (secretData: string) => string;
}

const useStore = defineStore('default-store', {
	// 是否启用持久化，传入 true/[] 均可，表示使用公用参数进行持久化
	persist: boolean | PersistProps[]
	state,
	getters,
	actions
})
```

## License

[MIT](./LICENSE) License © 2022 [Owner](https://github.com/lx11573)

---
_Source: https://npm.io/package/pinia-persist-own · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
