Skip to content

私有npm仓库搭建

npm 私有仓库的原理

私有仓库

用户 install 后向私有 npm 发起请求,服务器会先查询所请求的这个模块是否是我们自己的私有模块或已经缓存过的公共模块,如果是则直接返回给用户;如果请求的是一个还没有被缓存的公共模块,那么则会向上游源请求模块并进行缓存后返回给用户。上游的源可以是 npm 仓库,也可以是淘宝镜像。

常用的 npm 私有仓库框架:

Nexus 是 Java 社区的一个方案,可以用于 Maven、npm 多种类型的仓库,界面比较丑。Sinopia 是基于 Node.js 构建的,已经年久失修不维护了,Verdaccio 是 forked Sinopia 进行改造的;Sinopia 和 Verdaccio 比较偏向于一个零配置、轻量型的私有 npm 模块管理工具,不需要额外的数据库配置,它内部自带小型数据库,支持私有模块管理的同时也支持缓存使用过的公共模块,发布及缓存的模块以静态资源形式本地存储。cnpm 支持静态配置型用户管理机制,以及分层模块权限设置,可以实现公共模块镜像更新以及私有模块管理,支持拓展多种存储形式,相对的数据库的配置较多,部署过程略复杂,是淘宝及多家大型公司搭建内部私有 npm 仓库选择的方案。

基于团队内使用的考虑,使用 Verdaccio 构建成本比较低,后期也好维护,等后面如果需要做完整的 DevOps 流程再详细考虑 Verdaccio 和 cnpm 的优劣。

Released under the MIT License.