JSON 格式化与补全 — ZTools 插件,自动修复常见 JSON 语法问题并高亮标注补全处。
这是一个使用 Vue 3 + Vite + TypeScript 构建的 ZTools 插件。
- 触发指令:
格式化JSON/json - 匹配指令:选中文本 →
格式化JSON(over类型,自动带入内容) - 实时预览:输入后 debounce 220ms 自动格式化合法 JSON;超过 200KB 需手动点「格式化」
- 格式化:仅美化合法 JSON(含整段去转义),不改脏数据
- 补全:点击「补全」才修复单引号、尾逗号、缺括号、缺值等,补全处以背景色 + 下划线标注
- 复制:一键复制当前内容到剪贴板
.
├── public/
│ ├── logo.png # 插件图标
│ ├── plugin.json # 插件配置文件
│ └── preload/ # Preload 脚本目录
│ ├── package.json
│ └── services.js
├── src/
│ ├── main.ts
│ ├── main.css
│ ├── App.vue
│ ├── env.d.ts
│ └── JsonFormat/ # JSON 格式化功能
│ ├── index.vue
│ ├── editorSetup.ts
│ ├── repairAndFormat.ts
│ └── types.ts
├── index.html
├── vite.config.js
├── tsconfig.json
├── package.json
└── README.md
npm installnpm run dev开发服务器将在 http://localhost:5173 启动。ZTools 会自动加载开发版本。
npm testnpm run build构建产物将输出到 dist/ 目录。
编辑 public/plugin.json 文件:
{
"name": "你的插件名称",
"description": "插件描述",
"author": "作者名称",
"version": "1.0.0",
"features": [
// 添加你的功能配置
]
}在 src/ 目录下创建新的功能组件:
<!-- src/MyFeature/index.vue -->
<template>
<div class="my-feature">
<h1>{{ title }}</h1>
<!-- 你的组件内容 -->
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const title = ref('我的新功能')
</script>
<style scoped>
.my-feature {
padding: 20px;
}
</style>在 src/App.vue 中按 action.code 挂载对应页面(当前仅 JsonFormat)。
在 plugin.json 中添加功能配置:
{
"code": "myfeature",
"explain": "我的新功能",
"icon": "logo.png",
"cmds": ["触发指令"]
}<script setup lang="ts">
// 隐藏主窗口
window.ztools.hideMainWindow()
// 显示通知
window.ztools.showNotification('操作成功')
// 更多 API 请参考官方文档
</script>ZTools 提供了一套 CSS 变量用于主题适配:
.my-component {
background: var(--bg-color);
color: var(--text-color);
border: 1px solid var(--border-color);
}@media (prefers-color-scheme: dark) {
.my-component {
/* 暗色模式样式 */
}
}npm run build将 dist/ 目录中的所有文件复制到 ZTools 插件目录进行测试。
- 确保
plugin.json中的信息完整准确 - 准备好插件截图和详细说明
- 访问 ZTools 插件市场提交插件
A: 使用 npm run dev 启动开发服务器,在插件界面中点击插件头像图标,在弹出的菜单中选择"打开开发者工具"进行调试。
A: 通过 public/preload/services.js 文件扩展服务,然后在组件中使用 window.services 调用。
A: 确保 public/logo.png 文件存在,且在 plugin.json 中正确配置了 logo 字段。
A: 建议使用 Node.js 流式处理,在 preload 脚本中实现文件分块处理逻辑。
MIT License
祝你开发愉快! 🎉