{"id":51576927,"url":"https://github.com/juhaozero/browser-tool","last_synced_at":"2026-07-11T01:02:23.799Z","repository":{"id":365598629,"uuid":"1271901564","full_name":"juhaozero/browser-tool","owner":"juhaozero","description":"browser-tool","archived":false,"fork":false,"pushed_at":"2026-07-03T10:07:19.000Z","size":1267,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-03T12:10:41.575Z","etag":null,"topics":["chrome","developer-tools","extension","web"],"latest_commit_sha":null,"homepage":"https://app.juhaozero.com/browser/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juhaozero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-17T05:37:48.000Z","updated_at":"2026-07-03T10:07:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/juhaozero/browser-tool","commit_stats":null,"previous_names":["juhaozero/browser-tool"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/juhaozero/browser-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaozero%2Fbrowser-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaozero%2Fbrowser-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaozero%2Fbrowser-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaozero%2Fbrowser-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juhaozero","download_url":"https://codeload.github.com/juhaozero/browser-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaozero%2Fbrowser-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35347554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome","developer-tools","extension","web"],"created_at":"2026-07-11T01:02:23.267Z","updated_at":"2026-07-11T01:02:23.786Z","avatar_url":"https://github.com/juhaozero.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Browser Tool — 浏览器工具箱\n\n![GitHub License](https://img.shields.io/github/license/juhaozero/browser-tool)\n\n纯前端工具集。绝大多数工具在浏览器本地运行；少数工具（如 IP 查询）需联网访问第三方接口。\n\n## 特性\n\n- **隐私优先**：计算、转换、哈希均在本地 Web Crypto / DOM API 中完成（IP 查询等少数工具除外）\n- **模块化架构**：每个工具独立组件，通过注册表统一管理，易于扩展\n- **开箱即用工具**：JSON、Base64、UUID、时间戳、哈希、JWT 等\n- **深色/浅色主题**：跟随系统偏好，可手动切换\n- **响应式布局**：桌面侧边栏 + 移动端适配\n- **桌面客户端**：基于 Tauri 2 打包安装包\n\n## 快速开始\n\n```bash\nnpm install -g pnpm\ngit clone --recurse-submodules \u003crepo-url\u003e\n# 若已 clone 但未拉取 submodule：git submodule update --init --recursive\npnpm install\npnpm run dev      # 开发服务器，默认 http://localhost:5173\npnpm run build    # Web 生产构建，输出到 dist/\npnpm run preview  # 本地预览构建结果，默认 http://localhost:4173\n```\n\n### gitignore 模板（submodule）\n\n`.gitignore 生成器` 的模板来自 [github/gitignore](https://github.com/github/gitignore)，以 submodule 形式放在 `vendor/gitignore/`。构建时会自动扫描并生成 `src/data/gitignore/` 下的 JSON 索引。\n\n```bash\n# 更新官方模板到最新\ngit submodule update --remote vendor/gitignore\npnpm run sync:gitignore\n```\n\n**自定义端口**\n\n任选一种方式即可：\n\n**方式一：修改配置文件（推荐，长期生效）**\n\n编辑 `vite.config.ts`：\n\n```typescript\nexport default defineConfig({\n  server: {\n    port: 3000,       // 开发端口\n    strictPort: false // true = 端口被占用时报错；false = 自动尝试下一个可用端口\n  },\n  preview: {\n    port: 8080,       // npm run preview 的端口\n  },\n})\n```\n\n**方式二：命令行临时指定（不改配置文件）**\n\n```bash\npnpm run dev -- --port 3000\npnpm run preview -- --port 8080\n```\n\n**方式三：指定监听地址**\n\n```bash\npnpm run dev -- --host 0.0.0.0 --port 3000\n```\n\n\n## Web 部署\n\n本项目是纯静态站点。执行 `pnpm run build` 后，`dist/` 目录即为可部署的完整产物。\n\n### 子路径部署\n\n默认部署在域名根路径（`/`）。若需挂到子路径（如 `https://example.com/app/`），修改 `.env`：\n\n```bash\nVITE_BASE_PATH=/app/\n```\n\n也可直接改 `src/config/base-path.ts` 中的 `DEFAULT_BASE_PATH`。构建后把 `dist/` 内容放到服务器的 `/app/` 目录，并配置 SPA 回退到 `/app/index.html`。\n\n### 部署前检查\n\n```bash\npnpm run build\npnpm run preview   # 本地验证 dist/ 是否正常\n```\n\n## Tauri 桌面端（Windows）\n\n### 环境要求\n\n| 依赖 | 说明 |\n|------|------|\n| [Node.js](https://nodejs.org/) | 与 Web 开发相同 |\n| [pnpm](https://pnpm.io/) | 包管理 |\n| [Rust](https://www.rust-lang.org/tools/install) | Tauri 后端编译 |\n| [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) ||\n| WebView2 | Windows 10/11 通常已内置 |\n\n安装 Rust 后执行 `rustup default stable`。\n\n### 开发\n\n```bash\npnpm run tauri:dev\n```\n\n\n### 打包 Windows 安装包\n\n```bash\npnpm run tauri:build\n```\n\n产物位于 `src-tauri/target/release/bundle/`：\n\n- `nsis/` — NSIS 安装程序（`.exe`）\n- `msi/` — MSI 安装包\n\n### Tauri 与 Web 构建差异（重要）\n\n| 项目 | Web (`pnpm run build`) | Tauri (`pnpm run tauri:build`) |\n|------|------------------------|--------------------------------|\n| `VITE_BASE_PATH` | 读取 `.env`，可设子路径 | **自动忽略**，强制 `base: './'` |\n| 静态资源路径 | 绝对或子路径 | 相对路径 `./assets/...` |\n| React Router | 可设 `basename` | `basename` 为空（根路由） |\n| 联网请求 | 浏览器 `fetch` | Tauri 环境走 `@tauri-apps/plugin-http` |\n\n\n## 技术栈\n\n- React 19 + TypeScript\n- Vite 8\n- Tailwind CSS 4\n- React Router 7\n- Lucide Icons\n- Tauri 2（桌面端）\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuhaozero%2Fbrowser-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuhaozero%2Fbrowser-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuhaozero%2Fbrowser-tool/lists"}