npm 的公共注册中心(Registry)是如何运作的?
1. 中心化存储与分发
- npm 注册中心是一个集中的包数据库,任何开发者都可以发布包,任何开发者都可以安装
- 包以 CommonJS 或 ECMAScript Module(ESM)格式存储,附带 JSON 格式的元数据文件
- 内部使用 CouchDB 管理公开数据,通过 registry.npmjs.org 提供访问
2. 命名空间与发布规则
- 包名遵循"先到先得"原则,全局唯一
- 支持 scope(作用域)机制,如 @org/package-name,允许组织在自有命名空间下发布包
- 注册中心不对提交进行前置审核,依赖用户举报与自动化检测来处置违规包
3. 统计与质量信号
- 注册中心向开发者暴露包的下载量、依赖数量等统计数据
- 这些数据帮助开发者评估包的质量与活跃度,但下载量反映的是请求量而非独立用户数