EasyNote 是一个简单的命令行笔记工具,帮助你快速记录、管理和检索笔记。它使用 Node.js 内置的 SQLite 模块存储笔记,支持分级标签、时间戳和交互模式,让你的笔记管理更加高效。
⚡ 笔记默认保存在你的用户主目录下的
~/.easynote/notes.db文件中,也可自定义路径。
✅ 无需额外安装数据库驱动,直接使用 Node.js 原生能力,无编译烦恼。
- ✅ 快速添加笔记:一行命令即可记录想法,支持带空格的引号参数。
- 🏷️ 分级标签:标签可包含斜杠表示层级(如
work/project1),便于精细分类。 - 🔍 智能过滤:按标签前缀过滤笔记(例如
--tag work匹配work/project1)。 - 🔎 全文搜索:按关键词搜索笔记内容。
- ✏️ 编辑与删除:通过 ID 修改或移除笔记。
- 🕒 时间戳:自动记录创建和更新时间。
- 💬 交互模式:运行
easynote进入交互式 shell,连续操作更流畅。 - 📂 统一存储:笔记集中保存在 SQLite 数据库中,避免散落各处。
- 🛡️ 错误处理:友好的错误提示,避免意外崩溃。
- 🔒 数据安全:数据库文件权限自动设置为仅所有者可读写。
- Node.js v22.5.0 或更高版本(内置
node:sqlite模块所需) - npm
- 克隆或下载本项目代码。
- 在项目目录下安装依赖:
npm install
- (可选)将脚本链接到全局,方便直接使用
easynote命令:或者直接通过npm link
node src/index.js运行。
# 添加笔记(可带分级标签)
easynote add "买牛奶" --tags grocery,important
easynote add "完成项目文档" --tags work/project1,urgent
# 列出所有笔记
easynote list
# 按标签前缀过滤(支持分级标签)
easynote list --tag work
easynote list --tag work/project1
# 删除笔记(按 ID)
easynote delete 3
# 编辑笔记内容
easynote edit 2 "更新后的内容"
# 搜索笔记
easynote search 会议
# 查看帮助
easynote --help直接运行 easynote 不带任何命令,即可进入交互式 shell:
easynote>
支持的命令与命令行类似,但无需每次输入 easynote:
add <内容> [--tags <标签>]- 添加笔记(内容可包含空格,用引号括起)list [--tag <标签>]- 列出笔记delete <id>- 删除笔记edit <id> <新内容>- 编辑笔记search <关键词>- 搜索笔记help- 显示帮助exit- 退出
示例:
easynote> add 完成报告 --tags work/project1
easynote> list --tag work
easynote> delete 1
easynote> exit
通过 --db-path 选项可以指定数据库文件的存储位置:
easynote --db-path /path/to/my-notes.db add "自定义路径笔记"注意:该选项必须放在命令之前,因为它是全局选项。
EasyNote 使用 SQLite 数据库存储笔记,包含以下字段:
id: 唯一标识content: 笔记内容tags: JSON 数组格式的标签列表(例如["work/project1","urgent"])created_at: 创建时间updated_at: 最后更新时间(通过触发器自动更新)
默认数据库位置:~/.easynote/notes.db(目录会自动创建,权限设置为 700)。
为提高查询性能,自动创建以下索引:
idx_content:加速内容搜索idx_tags:加速标签过滤
重构后的代码采用模块化设计,便于维护和扩展:
src/
├── index.js # 主入口,CLI 配置
├── db.js # 数据库连接、初始化、关闭
├── parser.js # 命令行解析器(支持引号)
├── commands.js # 所有命令处理函数
└── interactive.js # 交互模式实现
所有模块均使用 ES 模块(import/export)并包含错误处理。
任何时候都可以通过以下命令获取帮助:
easynote --help你会看到类似这样的指南:
Welcome to EasyNote v0.0.1
Store notes with tags and timestamps in a local SQLite database.
Default database: /Users/username/.easynote/notes.db
Usage: easynote <command> [options]
Commands:
add <note>, a Add a new note
list, ls List all notes
delete <id>, rm Delete a note by ID
edit <id> <newContent>, ed Edit a note's content
search <keyword>, find Search notes by keyword
Examples:
easynote add "Buy milk" --tags grocery,important
easynote list --tag work
easynote delete 3
easynote search meeting
easynote # Enter interactive mode
# 添加带分级标签的笔记
$ easynote add "下午3点开会" --tags meeting,work/project1
Note added (ID: 1)
# 添加无标签笔记(使用别名 a)
$ easynote a "记得买咖啡"
Note added (ID: 2)
# 列出所有笔记
$ easynote ls
Your notes:
[1] 下午3点开会 (创建: 2026-03-07 14:30:00) 标签: meeting, work/project1
[2] 记得买咖啡 (创建: 2026-03-07 14:31:00)
# 按标签前缀过滤
$ easynote list --tag work
Your notes:
[1] 下午3点开会 (创建: 2026-03-07 14:30:00) 标签: meeting, work/project1
# 搜索包含“咖啡”的笔记
$ easynote search 咖啡
Notes containing "咖啡":
[2] 记得买咖啡 (2026-03-07 14:31:00)
# 编辑 ID 为 2 的笔记
$ easynote edit 2 "买咖啡(已买)"
Note 2 updated.
# 删除 ID 为 1 的笔记
$ easynote rm 1
Note 1 deleted.欢迎提交 Issue 或 Pull Request 来改进 EasyNote!
如果你有任何想法或建议,请随时参与贡献。
MIT © EasyNote