今天在 GitHub Trending 上看到一个有意思的项目:NoSignups(前称 FckSignups),一个"零废话"的开源工具聚合站——它专门收录那些无需注册、无需邮箱、无追踪即可直接在浏览器里使用的工具。对于厌倦了"先注册再使用"的现代软件体验的人来说,这个项目本身就是一种态度宣言。

一、项目概述

NoSignups 是一个人工精选的开源工具目录。它的核心理念可以浓缩成一句话:工具应该立即能用,而不是先逼你交出邮箱。

项目方在 README 里把立场写得很直白:

Open Source Tools. Zero Bullsh*t. A curated collection of open-source tools you can use instantly in your browser. no accounts, no emails, no tracking. Just tools that work.

它的价值主张非常明确:

  • 无需注册:没有强制的注册墙,打开即用的工具才有资格入选
  • 数据归你:拒绝数据收割与追踪
  • 开源优先:默认收录开源项目,而不是黑盒商业软件
  • 简单至上:反对臃肿与不必要的复杂度

目前目录已收录 200+ 个工具,并按功能分为十大类:效率(Productivity)、设计(Design & Graphics)、开发(Development)、写作(Writing & Docs)、隐私(Privacy)、工具(Utilities)、数据(Data & Analytics)、媒体(Media)、教育(Education)以及"全部"聚合视图。

二、技术原理

架构选型

NoSignups 本身是一个标准的 React + TypeScript + Vite 单页应用(SPA)。从 package.json 可以看到,它使用了最新的 React 19 与 Vite 8:

{
  "name": "fcksignups",
  "version": "1.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "npm-check-updates": "^23.0.1",
    "react": "^19.2.8",
    "react-dom": "^19.2.8"
  },
  "devDependencies": {
    "@types/react": "^19.2.18",
    "@types/react-dom": "^19.2.4",
    "@vitejs/plugin-react": "^6.0.5",
    "typescript": "^7.0.2",
    "vite": "^8.2.0",
    "vite-plugin-html": "^3.2.2"
  }
}

选型上的几个关键点:

  • "type": "module":整个项目以原生 ESM 模块运行,配合 Vite 的按需编译,开发体验流畅
  • React 19:采用最新的并发特性与 react-jsx 编译时 JSX 转换(见 tsconfig.json 的 "jsx": "react-jsx")
  • build 脚本先 tsc 后 vite build:先走 TypeScript 类型检查,再交给 Vite 打包,保证产物类型安全
  • vite-plugin-html:用于构建期对 index.html 做注入/变量替换

TypeScript 的严格程度也值得注意,tsconfig.json 开启了几乎全部严格开关:

{
  "compilerOptions": {
    "target": "ES2020",
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "module": "ESNext",
    "moduleResolution": "bundler",
    "jsx": "react-jsx",
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "skipLibCheck": true
  },
  "include": ["src"]
}

noUnusedLocals / noUnusedParameters 强制消灭死代码,isolatedModules 确保单文件转译安全,resolveJsonModule 则方便了工具数据的 JSON 化维护。

工具 Schema:数据驱动的分类目录

整个站点的核心是一份工具数据 + 一套分类体系。每个工具都遵循统一的 Schema,这也是它能被社区规模化贡献的底层原因:

字段必填说明
id是URL 友好的唯一标识
name是展示名称
description是一句话摘要
url是工具直链
category是必须匹配某个分类 id
tags否可搜索的关键词数组
github否源码仓库链接
license否SPDX 许可证标识
stars否GitHub Star 数(用于展示)
featured否布尔值,置顶到顶部
notRecommendedReason否不推荐的理由

这种"数据即内容"的结构意味着:新增一个工具本质上就是往数据文件里追加一条记录,无需改动任何组件逻辑——非常适合开源社区协作。

精选机制(Featured)

当工具数突破 200 后,同质化是必然问题。作者引入 featured 字段作为主观精选置顶:把那些质量出众或创意独特的工具钉在顶部,打破千篇一律的列表感。作者也坦诚这是有偏见的——“独特性"由他本人定义。

三、安装与快速开始

环境要求

  • 安装好 Node.js(建议 18+,以兼容 Vite 8 与 React 19)
  • 任意包管理器(npm 即可)

一键克隆并运行

项目提供了把克隆、安装、启动串成一条命令的便捷写法:

git clone https://github.com/BraveOPotato/FckSignups.git && \
cd FckSignups && \
npm install && \
npm run dev

启动后 Vite 会给出本地访问地址(默认 http://localhost:5173),打开即可看到工具目录界面。

生产构建

npm run build   # 等价于 tsc && vite build
npm run preview # 本地预览构建产物

四、使用方法与实战

作为使用者

打开网站后,你可以:

  1. 通过顶部分类(效率、设计、开发、隐私……)快速筛选
  2. 使用标签(tags)做关键词搜索
  3. 点击工具直链,直接跳转到对应开源工具的网页,全程无需注册

作为贡献者:提交一个新工具

NoSignups 是社区驱动的项目,收录规则很清晰:

  • 工具必须不创建账户即可使用
  • 描述控制在 140 字符以内
  • 每个工具配 3–5 个相关标签

贡献方式有两种:

  1. 在 GitHub 上用模板 提交新工具 issue
  2. 直接在网站点击 “SUBMIT A TOOL” 按钮

你也可以在本地的 src 数据文件中按上面的 Schema 手动追加记录,然后提 PR。

复用到自己的项目

如果你也想搭一个类似的"无注册工具墙”,NoSignups 的 GPL-3.0 许可证允许你基于它二次开发——只需保留同样的开源义务。注意:目录中列出的各个第三方工具仍保留各自许可证,项目方不主张它们的所有权。

五、常见问题与解决方案

Q1:npm install 失败或报版本冲突? 项目依赖 React 19 / Vite 8 等较新版本,建议先用 npm-check-updates(已列入依赖)检查并升级本地 Node 与依赖;确认 Node 版本满足 Vite 8 的最低要求。

Q2:想新增分类,但工具无法显示? category 字段必须精确匹配分类 id(如 productivity、privacy)。若填了不存在的分类 id,工具可能落不到任何筛选下,需先在分类表中补齐对应条目。

Q3:TypeScript 编译报错 “unused variable”? 因为 tsconfig 开启了 noUnusedLocals 和 noUnusedParameters,任何未使用的局部变量/参数都会让 tsc 阶段失败。删除无用声明或加下划线前缀忽略即可。

Q4:本地能跑,部署后白屏? 通常是构建产物路径或 base 配置问题。检查 Vite 的 base 选项与托管平台的子路径是否一致;用 npm run preview 先在本地验证构建产物。

六、总结

NoSignups 不只是一个工具导航站,更像是对"注册墙泛滥"现象的温柔反抗——它用一份清晰的 Schema 和开源协作,把"打开即用的好工具"聚到一起。技术上它足够轻量(React 19 + Vite 8,零后端),却因为数据驱动的设计而具备很强的扩展性。如果你也受够了到处填邮箱,不妨去逛逛,或者按它的贡献规则,把你私藏的那个"免注册神器"加进去。

No cookies. No analytics. No bullsht.*