网站首页 > 文章精选 正文
在公司内部开发npm包,是不是总绕不开这些痛点:
- 不方便发布私有包
- 外网 npm 太慢、还容易挂
- 权限控制不好做,团队之间乱用依赖
- 官方私库方案(GitHub Package、npm Enterprise)要钱又不好配
我现在都不用它们了,自从用了开源的 Verdaccio,轻量、自建、权限可控,关键:几分钟就能搭一个自己的 npm 私库!
什么是 Verdaccio?
Verdaccio是一个基于Node.js的轻量级私有npm仓库,支持:
- 本地发布私有包
- 自动代理和缓存公网npm包
- 基于用户、组的权限控制
- 完全支持npm/yarn/pnpm
- Docker一键部署
一句话:想在局域网内搞个npm企业私库,Verdaccio是目前最省事的选择。
五分钟部署 Verdaccio
1. Docker启动
docker run -d --name verdaccio \
-p 4873:4873 \
-v ~/.verdaccio:/verdaccio \
verdaccio/verdaccio
启动后,访问:http://localhost:4873,就看到Verdaccio的UI了。
2. 修改配置(可选)
Verdaccio默认配置文件在 ~/.verdaccio/config.yaml,可以设置:
- 包访问权限(auth)
- 存储路径(storage)
- 外部npm源代理(uplinks)
例如限制某些用户才能发布包:
packages:
"@myorg/*":
access: $authenticated
publish: admin
发布你的第一个私有包
1. 创建一个包
mkdir my-lib && cd my-lib
npm init -y
修改package.json:
{
"name": "@myorg/my-lib",
"version": "1.0.0",
"publishConfig": {
"registry": "http://localhost:4873"
}
}
2. 登录 + 发布
npm adduser --registry http://localhost:4873
npm publish
成功发布!在Web UI也能看到。
配合团队 CI/CD 的最佳实践
- 在 CI 中配置.npmrc自动登录:
- //localhost:4873/:_authToken=XXXXXX
- 将verdaccio镜像 + config一起打包进内网容器平台
- 配合nginx做反向代理,实现https访问和LDAP登录
Verdaccio vs 其他方案对比
特性 | Verdaccio | npm 企业私库 | GitHub Package |
成本 | 免费 | 收费 | 私包限制多 |
搭建复杂度 | 超简单 | 复杂 | 权限麻烦 |
内网支持 | 强 | 不友好 | |
权限管理 | 自定义 | 多组织复杂 | |
生态兼容性 | 完美支持 npm/yarn |
总结
如果你还在为npm私有包管理发愁,Verdaccio绝对是目前最友好、好用的解决方案之一:
- 五分钟搭建,团队立即可用
- 本地化管理,权限灵活
- 支持缓存外网依赖,安装提速
- 适合CI/CD环境集成、自建镜像方案
下篇要不要来个“Verdaccio 企业级部署实战”?评论区见!
猜你喜欢
- 2025-07-14 开源的项目管理工具MCP来了!用AI帮你登记任务工时不是梦
- 2025-07-14 拒绝白嫖,开源项目作者删库跑路,数千个应用程序无限输出乱码
- 2025-07-14 Vue 怎么安装(vue怎么安装脚手架)
- 2025-07-14 如何快速搭建日志系统(建立日志)
- 2025-07-14 开源工具分享:使用Easy Dataset为大模型准备训练数据,在线部署
- 2025-07-14 支持!在 JetBrains IDE 中一键打开 Gitee 仓库
- 2025-07-14 Redux 最佳实践[译](redux实战)
- 2025-07-14 包管理工具三国杀:pnpm如何KO npm和yarn?
- 2025-07-14 Artifactory-仓库布局(四种仓库布局模式的优缺点)
- 2025-07-14 别再自建仓库了,云效Maven仓库不限容量免费用
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)