crosssync 0.1.0 → 0.1.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 +145 -9
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
# CrossSync
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/crosssync)
|
|
4
|
+
[](./LICENSE)
|
|
5
|
+
|
|
3
6
|
跨浏览器书签与历史记录同步 CLI —— 定时同步 Chrome 和 Edge 的数据。
|
|
4
7
|
|
|
5
8
|
通过直接读取本地浏览器数据文件实现:**不需要浏览器扩展,不需要常驻进程,也没有实时同步**。
|
|
6
9
|
一次运行就是「读取 → 备份 → 合并 → 写回书签 → 导出 JSON」。
|
|
7
10
|
|
|
11
|
+
## 特性
|
|
12
|
+
|
|
13
|
+
- **纯 CLI**:没有扩展、没有 WebSocket、没有 token
|
|
14
|
+
- **双向合并书签**:按 `id` 递归归并,同 id 冲突保留 `date_added` 更新的那条
|
|
15
|
+
- **历史只读导出**:SQLite 复制后查询,按 URL 去重合并,绝不写回 `History.sqlite`
|
|
16
|
+
- **写前必备份**:备份失败则整次同步立即中止
|
|
17
|
+
- **不会踩坏浏览器**:写回前检测浏览器是否运行;写回时移除过期 `checksum`
|
|
18
|
+
- **跨平台定时任务**:Windows 任务计划程序 / macOS launchd / Linux systemd timer 或 crontab
|
|
19
|
+
- **跨平台路径解析**:Windows、macOS、Linux 的 Chrome/Edge 数据目录自动识别
|
|
20
|
+
|
|
21
|
+
## 环境要求
|
|
22
|
+
|
|
23
|
+
- Node.js **20 或更高版本**
|
|
24
|
+
- Chrome 和/或 Edge(Chromium 内核)
|
|
25
|
+
|
|
8
26
|
## 安装
|
|
9
27
|
|
|
10
28
|
```bash
|
|
@@ -17,21 +35,139 @@ npm install -g crosssync
|
|
|
17
35
|
pnpm add -g --allow-build=better-sqlite3 crosssync
|
|
18
36
|
```
|
|
19
37
|
|
|
20
|
-
|
|
38
|
+
如果从 GitHub 下载 `better-sqlite3` 预编译二进制失败,可以走 npmmirror:
|
|
21
39
|
|
|
22
40
|
```bash
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
41
|
+
npm_config_better_sqlite3_binary_host=https://registry.npmmirror.com/-/binary/better-sqlite3 \
|
|
42
|
+
npm install -g crosssync
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 快速开始
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# 查看浏览器路径、profile、备份和定时任务状态
|
|
49
|
+
crosssync status
|
|
50
|
+
|
|
51
|
+
# 先预览,不碰任何文件
|
|
52
|
+
crosssync sync --bookmarks --dry-run
|
|
53
|
+
|
|
54
|
+
# 正式同步书签(会先自动备份,再写回)
|
|
55
|
+
crosssync sync --bookmarks
|
|
56
|
+
|
|
57
|
+
# 读取历史并导出 JSON(只读,不写回)
|
|
58
|
+
crosssync sync --history
|
|
59
|
+
|
|
60
|
+
# 完全只读,只导出合并结果
|
|
61
|
+
crosssync export --format json --out ./out
|
|
29
62
|
```
|
|
30
63
|
|
|
31
|
-
|
|
64
|
+
> 写回书签前请先退出 Chrome / Edge。浏览器运行中会跳过写回,必要时可用 `--force`
|
|
65
|
+
> 强制覆盖(有风险,不建议)。
|
|
66
|
+
|
|
67
|
+
## 命令
|
|
68
|
+
|
|
69
|
+
### `crosssync sync`
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
crosssync sync --bookmarks # 只同步书签
|
|
73
|
+
crosssync sync --history # 只同步历史(只读导出)
|
|
74
|
+
crosssync sync --all # 两者都做(默认)
|
|
75
|
+
crosssync sync --bookmarks --dry-run # 预览,不写任何文件
|
|
76
|
+
crosssync sync --bookmarks --force # 浏览器运行中也强制写回
|
|
77
|
+
crosssync sync --strategy export # 完全只读
|
|
78
|
+
crosssync sync --browser edge # 只处理 Edge
|
|
79
|
+
crosssync sync --profile all # 处理所有 Chromium profile
|
|
80
|
+
crosssync sync --json # 机器可读报告
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### `crosssync backup`
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
crosssync backup # 立即备份所有书签/历史文件
|
|
87
|
+
crosssync backup --list # 列出已有备份
|
|
88
|
+
crosssync backup --prune --keep 10 # 只保留最近 10 份
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### `crosssync export`
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
crosssync export --format json # 写入 ~/.crosssync/export/
|
|
95
|
+
crosssync export --format json --out ./out # 写入指定目录
|
|
96
|
+
crosssync export --format json --stdout # 直接打印
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### `crosssync status` / `crosssync logs`
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
crosssync status
|
|
103
|
+
crosssync status --json
|
|
104
|
+
crosssync logs --limit 50 --level warn
|
|
105
|
+
crosssync logs --clear
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### `crosssync config`
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
crosssync config # 打印完整配置
|
|
112
|
+
crosssync config --path # 打印配置文件路径
|
|
113
|
+
crosssync config --get exports.keep
|
|
114
|
+
crosssync config --set exports.keep=5
|
|
115
|
+
crosssync config --set sync.strategy=export
|
|
116
|
+
crosssync config --reset
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### `crosssync install-cron` / `uninstall-cron`
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
crosssync install-cron # 默认每天 09:00
|
|
123
|
+
crosssync install-cron --expression "30 7 * * 1" # 每周一 07:30
|
|
124
|
+
crosssync install-cron --dry-run
|
|
125
|
+
crosssync uninstall-cron
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
| 平台 | 机制 |
|
|
129
|
+
|---|---|
|
|
130
|
+
| Windows | 任务计划程序 |
|
|
131
|
+
| macOS | launchd |
|
|
132
|
+
| Linux | systemd user timer 或 crontab |
|
|
133
|
+
|
|
134
|
+
## 数据位置
|
|
135
|
+
|
|
136
|
+
所有运行数据位于 `~/.crosssync/`:
|
|
137
|
+
|
|
138
|
+
| 内容 | 位置 |
|
|
139
|
+
|---|---|
|
|
140
|
+
| 配置 | `~/.crosssync/config.json` |
|
|
141
|
+
| 备份 | `~/.crosssync/backups/<yyyyMMdd-HHmmss>/` |
|
|
142
|
+
| 导出 | `~/.crosssync/export/` |
|
|
143
|
+
| 日志 | `~/.crosssync/logs/crosssync.log`(JSONL) |
|
|
144
|
+
|
|
145
|
+
导出文件会自动清理:默认保留最近 `10` 个。可用
|
|
146
|
+
`crosssync config --set exports.keep=5` 调整,设为 `0` 关闭自动清理。
|
|
147
|
+
备份不会自动删除,需要时运行 `crosssync backup --prune --keep N`。
|
|
148
|
+
|
|
149
|
+
## 安全约定
|
|
150
|
+
|
|
151
|
+
- 写回任何浏览器文件前必先备份;备份失败即中止,不写回
|
|
152
|
+
- 写回书签前检测浏览器进程,运行中默认跳过(`--force` 可覆盖)
|
|
153
|
+
- 写回 `Bookmarks` 时移除 `checksum`,避免 Chromium 丢弃外部改动
|
|
154
|
+
- **从不写回 `History.sqlite`**(Chromium 运行期独占该文件)
|
|
155
|
+
- **从不读取**密码、Cookie、标签页数据
|
|
156
|
+
- 所有 JSON 落盘使用临时文件 + rename 原子替换
|
|
157
|
+
- 日志脱敏,不记录书签 URL / 标题
|
|
158
|
+
|
|
159
|
+
## 从源码构建
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
git clone https://github.com/anliluZoe/CrossSync.git
|
|
163
|
+
cd CrossSync
|
|
164
|
+
pnpm install
|
|
165
|
+
pnpm build
|
|
166
|
+
node packages/cli/dist/index.js --version
|
|
167
|
+
```
|
|
32
168
|
|
|
33
169
|
完整文档见仓库主页:https://github.com/anliluZoe/CrossSync
|
|
34
170
|
|
|
35
171
|
## License
|
|
36
172
|
|
|
37
|
-
MIT
|
|
173
|
+
[MIT](./LICENSE) © 2026 CrossSync contributors
|
package/dist/index.js
CHANGED
|
@@ -4501,7 +4501,7 @@ var {
|
|
|
4501
4501
|
} = import_index.default;
|
|
4502
4502
|
|
|
4503
4503
|
// src/constants.ts
|
|
4504
|
-
var CLI_VERSION = "0.1.
|
|
4504
|
+
var CLI_VERSION = "0.1.1";
|
|
4505
4505
|
var CLI_NAME = "crosssync";
|
|
4506
4506
|
var CLI_DESCRIPTION = "Cross-browser bookmark & history sync CLI (Chrome + Edge)";
|
|
4507
4507
|
var WINDOWS_TASK_NAME = "CrossSync";
|