mm_vars 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/example/index.js +49 -0
- package/lib/vars.js +1 -1
- package/package.json +7 -2
- package/test/vars.test.js +6 -6
package/README.md
CHANGED
|
@@ -19,12 +19,12 @@ npm install mm_vars
|
|
|
19
19
|
const { Vars, varsAdmin } = require('mm_vars');
|
|
20
20
|
|
|
21
21
|
// 直接使用存储类
|
|
22
|
-
const vars = new Vars('./data/vars.json');
|
|
22
|
+
const vars = new Vars({ file: './data/vars.json' });
|
|
23
23
|
vars.set('step', 1).set('state', 'busy');
|
|
24
24
|
vars.save();
|
|
25
25
|
|
|
26
26
|
// 通过管理器按作用域获取实例(相同作用域返回同一实例)
|
|
27
|
-
const scoped = varsAdmin('app', './data/app_vars.json');
|
|
27
|
+
const scoped = varsAdmin('app', { file: './data/app_vars.json' });
|
|
28
28
|
scoped.set('count', 10);
|
|
29
29
|
```
|
|
30
30
|
|
package/example/index.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mm_vars 变量存储示例
|
|
3
|
+
* 演示 varsAdmin() 作用域工厂,以及 Vars 类可随时修改、
|
|
4
|
+
* 删除的键值变量存取与 JSON 文件持久化(save / load)。
|
|
5
|
+
* 运行:node example/index.js
|
|
6
|
+
*/
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const os = require('os');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const { Vars, varsAdmin } = require('../index.js');
|
|
11
|
+
|
|
12
|
+
/** 示例临时目录 */
|
|
13
|
+
const TMP_DIR = fs.mkdtempSync(path.join(os.tmpdir(), 'mm-vars-example-'));
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 主流程
|
|
17
|
+
*/
|
|
18
|
+
function main() {
|
|
19
|
+
// 方式1:作用域工厂,获取 os 作用域的变量存储实例
|
|
20
|
+
const store = varsAdmin('os');
|
|
21
|
+
store.set('token', 'abc123');
|
|
22
|
+
console.log('工厂实例读取 token:', store.get('token'));
|
|
23
|
+
|
|
24
|
+
// 方式2:类实例 + 文件持久化
|
|
25
|
+
const file = path.join(TMP_DIR, 'vars.json');
|
|
26
|
+
const vars = new Vars({ file });
|
|
27
|
+
vars.set('name', 'demo').set('count', 1);
|
|
28
|
+
console.log('变量列表:', vars.list());
|
|
29
|
+
console.log('保存到文件:', vars.save());
|
|
30
|
+
|
|
31
|
+
// 变量可随时修改
|
|
32
|
+
vars.set('count', 2);
|
|
33
|
+
console.log('修改后 count:', vars.get('count'));
|
|
34
|
+
|
|
35
|
+
// 变量可删除
|
|
36
|
+
console.log('删除 name:', vars.del('name'));
|
|
37
|
+
console.log('删除后列表:', vars.list());
|
|
38
|
+
|
|
39
|
+
// 从文件重新加载(文件里是保存时的数据)
|
|
40
|
+
const loaded = new Vars({ file });
|
|
41
|
+
loaded.load();
|
|
42
|
+
console.log('重新加载后 name:', loaded.get('name'));
|
|
43
|
+
console.log('重新加载后 count:', loaded.get('count'));
|
|
44
|
+
|
|
45
|
+
// 清理临时目录
|
|
46
|
+
fs.rmSync(TMP_DIR, { recursive: true, force: true });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
main();
|
package/lib/vars.js
CHANGED
package/package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mm_vars",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "变量存储模块:用于存储可随时修改和删除的键值变量",
|
|
5
5
|
"main": "index.js",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://gitee.com/qiuwenwu91/mm_vars.git"
|
|
9
|
+
},
|
|
6
10
|
"keywords": [
|
|
7
11
|
"mm_mod",
|
|
8
12
|
"mm_infra",
|
|
@@ -19,7 +23,8 @@
|
|
|
19
23
|
"test": "jest --coverage"
|
|
20
24
|
},
|
|
21
25
|
"dependencies": {
|
|
22
|
-
"mm_corejs": "^1.1.4"
|
|
26
|
+
"mm_corejs": "^1.1.4",
|
|
27
|
+
"mm_kv_store": "^1.0.0"
|
|
23
28
|
},
|
|
24
29
|
"devDependencies": {
|
|
25
30
|
"jest": "^30.5.2"
|
package/test/vars.test.js
CHANGED
|
@@ -37,14 +37,14 @@ describe('Vars', () => {
|
|
|
37
37
|
describe('构造', () => {
|
|
38
38
|
it('默认不传文件路径时 file 为空字符串', () => {
|
|
39
39
|
const vars = new Vars();
|
|
40
|
-
expect(vars.
|
|
40
|
+
expect(vars.config.file).toBe('');
|
|
41
41
|
expect(vars.list()).toEqual({});
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
it('传入文件路径时保存路径', () => {
|
|
45
45
|
const file = path.join(tmp_dir, 'vars.json');
|
|
46
|
-
const vars = new Vars(file);
|
|
47
|
-
expect(vars.
|
|
46
|
+
const vars = new Vars({ file });
|
|
47
|
+
expect(vars.config.file).toBe(file);
|
|
48
48
|
});
|
|
49
49
|
});
|
|
50
50
|
|
|
@@ -141,7 +141,7 @@ describe('Vars', () => {
|
|
|
141
141
|
|
|
142
142
|
it('save 写入文件返回 true', () => {
|
|
143
143
|
const file = path.join(tmp_dir, 'vars.json');
|
|
144
|
-
const vars = new Vars(file);
|
|
144
|
+
const vars = new Vars({ file });
|
|
145
145
|
vars.set('a', 1);
|
|
146
146
|
expect(vars.save()).toBe(true);
|
|
147
147
|
expect(JSON.parse(fs.readFileSync(file, 'utf8'))).toEqual({ a: 1 });
|
|
@@ -153,14 +153,14 @@ describe('Vars', () => {
|
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
it('文件不存在时 load 返回 false', () => {
|
|
156
|
-
const vars = new Vars(path.join(tmp_dir, 'nope.json'));
|
|
156
|
+
const vars = new Vars({ file: path.join(tmp_dir, 'nope.json') });
|
|
157
157
|
expect(vars.load()).toBe(false);
|
|
158
158
|
});
|
|
159
159
|
|
|
160
160
|
it('文件存在时 load 加载数据返回 true', () => {
|
|
161
161
|
const file = path.join(tmp_dir, 'vars.json');
|
|
162
162
|
fs.writeFileSync(file, JSON.stringify({ a: 1, b: 'x' }));
|
|
163
|
-
const vars = new Vars(file);
|
|
163
|
+
const vars = new Vars({ file });
|
|
164
164
|
expect(vars.load()).toBe(true);
|
|
165
165
|
expect(vars.get('a')).toBe(1);
|
|
166
166
|
expect(vars.get('b')).toBe('x');
|