夜雨聆风学习资料网

ARTICLE · 1324593

周下载 3 亿次,你 lock 文件里的包大半是这个挪威人写的

周下载 3 亿次,你 lock 文件里的包大半是这个挪威人写的

type-fest 周下载 2.44 亿,chalk 周下载 3.07 亿,execa 周下载 1.08 亿。这三个数字背后是同一个人:Sindre Sorhus。

他在 GitHub 有 1,146 个公开仓库、85,086 个粉丝,账号注册于 2009 年。个人简介一行字:Full-Time Open-Sourcerer,做 Swift 和 JavaScript,写 macOS App、CLI 工具和 npm 包。

差评视频稿说他是「GitHub 榜一大哥,靠打赏过日子」。但 npm 周下载数亿的数字说明,他的包不是慈善项目,而是前端工具链的底座。这篇拆他两条线:开源 npm 生态,和闭源 macOS App。

◆ 项目简介

Sindre Sorhus 是挪威开发者,2009 年注册 GitHub,至今 16 年。他名下 npm 包覆盖 Node 工具链的几个底层环节:HTTP 请求、子进程执行、终端加载动画、终端着色、TypeScript 类型。

这些包的共同点是:协议宽松。got、execa、ora、ky、chalk 都是 MIT;type-fest 是 CC0-1.0,也就是公有领域贡献,README 明写「copy-paste the needed types. No credit required」。

但他同时在卖闭源软件。sindresorhus.com/apps 页面公开数据:64 款 App、12 年、6M+ 用户、10K+ 已回复支持邮件。代表产品有菜单栏时钟 Dato、防休眠工具 Lungo、GIF 转换 Gifski、桌面网页 Plash、浏览器选择器 Velja。

这两条线不能混着看。npm 包是开源给全行业当底座,App 是闭源付费产品。把 Dato 当开源项目去 fork,是会踩到法律边界的。

◆ 它怎么跑通

先看底层依赖是怎么回事。type-fest 周下载 2.44 亿,但你大概率没有直接装过它。它是一个 TypeScript 类型集合,被大量库作为传递依赖拉进来。chalk 3.07 亿、execa 1.08 亿是同一情况。

这意味着:你项目的 lock 文件里大概率已经有他的包,但你没注意到。升级 TypeScript 版本、升级 CLI 脚手架时,这些包会被动跟着走。

再看版本路线。got 是他最早的 HTTP 库,2014 年建仓,现在 14,953 Star。但 got README 第一屏就写:你大概想要 ky,更小、浏览器也能跑、基于 Fetch 更稳。ora README 也写:试试 yocto-spinner,更小。

他在主动引导用户迁到自己的后继包。got v11 已经停止维护,不接受 backport。新代码直接用 ky,老 got 代码停在 v11,逐步迁移。

这张图是按核验数据自绘的生态双线示意。左边是开源 npm 包,右边是闭源 App,数据来自 GitHub API 和 npm Downloads API,核验日期 2026-10-25。

协议边界要讲清楚。npm 包这一侧:MIT 要求保留版权头,CC0 不要求署名,商用无传染风险。App 这一侧:闭源、付费或 Setapp 订阅,不走 npm,源码不开放。

import ky from 'ky';import {execa} from 'execa';import chalk from 'chalk';

上面三行是一个典型 CLI 工具的起步。ky 发请求,execa 调子进程,chalk 上色。三件套都是他的包,都是宽松协议。

◆ 适用 vs 不适用

适用:Node 或 TypeScript 项目新写 HTTP 客户端直接用 ky,不用 got。CLI 工具用 execa 替 child_process,用 ora 或 yocto-spinner 做加载动画。商用产品过依赖扫描时,这些包是 MIT 或 CC0,保留版权头即可闭源商用。

不适用:不要把 sindresorhus.com/apps 上的 Dato、Lungo、Hyperduck、Pandan 当开源项目二次分发,它们是闭源商业产品。新项目如果还在 CommonJS,got 已不提供 CJS 导出,迁移成本先评估。type-fest 是类型集合不是运行时库,不能当逻辑代码引用。

◆ 项目链接

  • GitHub:https://github.com/sindresorhus 1146 公开仓库,85k 粉丝
  • App 官网:https://sindresorhus.com/apps 64 款 macOS/iOS App,6M+ 用户
  • got:https://github.com/sindresorhus/got HTTP 请求库,15k Star,MIT
  • ky:https://github.com/sindresorhus/ky Fetch 基 HTTP 客户端,17k Star
  • execa:https://github.com/sindresorhus/execa 子进程执行,7.6k Star
  • type-fest:https://github.com/sindresorhus/type-fest TS 类型集合,17.5k Star,CC0
  • ora:https://github.com/sindresorhus/ora 终端加载动画,9.8k Star

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料