Skip to content

Repository files navigation

Easy Tools Hub

面向开发者的免费在线小工具集:JSON、颜色、时间戳、编解码、密码、UUID、文本处理等,单仓库维护,首页统一入口。深色界面,中英文切换,计算在浏览器本地完成,无需登录。

在线访问(GitHub Pages)https://dsun6652-oss.github.io/easy-tools-hub/
(与 package.jsonhomepage 一致;若更换域名或子路径,请同步修改下方 SEO 相关文件。)

工具一览

路径 说明
/ 首页,全部工具入口
/json JSON 格式化、压缩、校验、转 CSV
/color HEX / RGB / HSL 互转与取色
/timestamp 时间戳 ↔ 北京时间
/url URL 组件编码 / 解码(encodeURIComponent)
/base64 UTF-8 文本 ↔ Base64
/password 随机密码(长度与字符集可选)
/uuid UUID v4 批量生成(1~10 条)
/text-case 文本大小写:大写、小写、首字母、驼峰
/text-diff 双栏文本对比(行级 + 词/字级高亮)

生产环境 base/easy-tools-hub/,完整 URL 形如:https://dsun6652-oss.github.io/easy-tools-hub/json

技术栈

  • React 18、React Router 6、Vite 5、TypeScript
  • 深色主题 CSS 变量(theme.css
  • 国际化:I18nContext + 各工具 locales.ts + siteLocales.ts

仓库结构

  • src/pages/Home.tsx:首页与工具卡片
  • src/toolsRegistry.tsx:路由注册表(路径、懒加载组件)
  • src/tools/<工具名>/:各工具页面、locales.ts仅在无可复用类名时再增加专属 CSS(如 JSON 高亮、颜色面板)
  • src/shared/:公共能力
    • styles/tool-page.css:工具页布局(main.tsx 已引入)。根节点使用 eth-tool-page,优先使用 .toolbar.editor-container.panel*.eth-tool-options.eth-tool-check 等(见该文件顶部注释)
    • i18n/I18nContext.tsx:全局语言(localStorageeasy-tools-hub:lang)与 I18nProvider
    • i18n/siteLocales.ts:首页、顶栏、工具卡片等多语言文案
    • i18n/useToolLocales.ts:各工具 locales.ts 与全局语言绑定,得到 t
    • components/LangSwitch.tsxToolPageHeader.tsxToolFooter.tsxToolErrorBanner.tsx
    • hooks/useCopyWithFeedback.ts
    • theme.css:全局主题变量
  • public/robots.txtpublic/sitemap.xml:爬虫与站点地图(见下文 SEO)
  • index.html:标题、描述、Open Graph、Twitter Card、JSON-LD

SEO 与站点地图

为便于搜索引擎与社交预览,已做如下配置(站点根 URL 默认为 https://dsun6652-oss.github.io/easy-tools-hub/):

文件 作用
index.html <title><meta name="description"><meta name="keywords">canonicalOpen GraphTwitter CardJSON-LDWebSite + ItemList 工具列表)
public/robots.txt AllowSitemap 地址
public/sitemap.xml 首页及各工具路径的 loc(构建后随 public/ 拷贝到 dist 根目录)

更换部署地址时,请批量替换:

  • index.html 内所有 https://dsun6652-oss.github.io/easy-tools-hub
  • public/robots.txtpublic/sitemap.xml
  • package.jsonhomepage(若使用 gh-pages)

可选后续步骤:

  • 在对应搜索引擎站长工具中提交 sitemap.xml
  • 如需验证站点所有权,在 index.html <head> 中加入平台提供的 meta 标签
  • 单页应用路由依赖前端渲染,重要着陆页可再考虑预渲染或静态快照(本仓库当前未接入)

开发与构建

npm install
npm run dev
  • 开发:vite 默认 base/
  • 生产构建:vite.config.tsbase/easy-tools-hub/,与 homepage 一致(GitHub Pages 子路径);npm run build 会先执行 tsc --noEmit 做类型检查
npm run build
npm run preview

部署:npm run deploy(依赖 gh-pages,将 dist 推到 gh-pages 分支)。

Chrome 扩展(本地开发用)

将同一套页面打成可离线使用的扩展:点击工具栏图标会在新标签页打开完整站点(HashRouter,路由形如 index.html#/json)。

npm run build:extension
  1. 构建产物在 dist-extension/(含 manifest.jsonbackground.js 与 Vite 输出)。
  2. 打开 Chrome → 扩展程序加载已解压的扩展程序 → 选择 dist-extension 文件夹。
  3. 点击扩展图标即可新开标签使用。

相关文件:

文件 说明
vite.extension.config.ts base: './'outDir: dist-extension、不拷贝站点用 public
.env.chrome VITE_CHROME_EXTENSION=true,触发 App.tsx 使用 HashRouter
extension/manifest.json MV3;无 default_popup,由 background.js 响应点击开新标签
extension/background.js chrome.tabs.create 打开 index.html
scripts/copy-extension-files.mjs 构建后把 manifest / background 复制进 dist-extension

上架 Chrome 网上应用店时需补充 icons、隐私说明等;本地加载可不配置图标(使用默认拼图图标)。扩展内若需自定义图标,可在 extension/icons/ 放置 PNG 并在 manifest.json 中声明。

新增工具

  1. 新建目录 src/tools/my-tool/,默认导出页面组件(可参考现有工具)。
  2. 添加 locales.ts(zh/en),在组件内使用 useToolLocales(locales) 得到 t
  3. src/shared/i18n/siteLocales.tszh.tools / en.tools 下增加与路由 path 一致的 key 及 titledescription
  4. 根节点使用 <div className="eth-tool-page">,配合 ToolPageHeader / ToolFooter,并优先复用 tool-page.css 中的类名。
  5. src/toolsRegistry.tsxtoolRoutes 中增加 pathlazy(() => import(...))
  6. SEO:在 public/sitemap.xmlindex.html 的 JSON-LD ItemList 中追加新工具 URL(保持 numberOfItems 与实际条数一致)。
  7. 若需新的 npm 依赖,在本仓库根目录安装。
  8. Chrome 扩展:一般无需改扩展配置;若改 manifest 版本号,请编辑 extension/manifest.json 后重新 npm run build:extension

Agent skills(仅本仓库)

与前端规范相关的 skills.sh 技能安装在 项目内 .agents/skills/不使用 npx skills add … -g,避免与其它项目全局规范冲突。

在本仓库根目录执行 npx skills list 可查看当前技能;全局列表为 npx skills list -g(应为空)。

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages