什么是npm私服
npm私服(私有仓库)指的是建立在企业或组织内部的、独立于公共 npm 注册中心的私有 Node 包管理器。私服允许团队在不公开源码的情况下共享和复用代码,也可以用来代理公共 npm 注册中心,缓存下载过的包,提高安装速度,减少对外部网络的依赖。
npm私服的主要用途(收益)
- 管理私有包 :
- 私服使得企业可以在不公开的情况下共享内部的 Node 包。这对于存储商业逻辑或内部工具非常有用。
- 缓存公共包 :
- 私服通常会缓存从公共 npm 注册中心下载的包,这意味着可以更快地安装相同的包,因为它来自内网,而不是互联网。
- 控制和安全性 :
- 通过使用私服,企业可以更好地控制哪些包可以被内部使用,以及如何使用这些包,增强了代码的安全性和合规性。
- 持续集成/持续部署(CI/CD) :
- 在CI/CD流程中,私服可以提供稳定的包版本管理,确保部署过程的一致性。
- 提高效率 :
- 开发团队不必每次都从公共 npm 注册中心下载相同的包,节约了带宽和时间。
- 降低公共注册中心依赖 :
- 如果公共 npm 注册中心不可用,私服可以作为一个备用源来保证开发和部署流程的连续性。
如何搭建npm私服
- Nexus Repository OSS:一个广泛使用的仓库,支持多种包类型,包括 npm。
- JFrog Artifactory:一种企业级的解决方案,支持多种包管理和自动化工具。
- Verdaccio:一个轻量级的私有 npm 代理注册中心,容易部署和维护。
- GitHub Packages:GitHub 提供的包管理服务,支持 npm 私有包。
设置私服需要一定的配置工作,比如更新项目的 .npmrc
文件以指向私服的地址,以及可能的身份验证配置。一旦设置完成,私服可以显著提高组织内部开发效率和代码共享的便利性。
Verdaccio
- 那在这里我们是使用Verdaccio这一个方式
- 官网:Page Not Found | Verdaccio
- 首先从安装开始
js
npm install verdaccio -g
使用方式很方便,直接终端verdaccio运行
- 可以通过
verdaccio --help
查看命令
- 这里我采用的是直接运行,所以他直接自动分配一个端口号给我了
- 如果看不习惯英文的话,可以通过右上角的一个齿轮状图标打开可以修改语言
- 回到我们拿到的命令:
npm adduser --registry http://localhost:4873/
- 这里其实就是将我们的账号指向本地的一个内网服务(4873)上
- 如果有npm账号了,就直接
npm login --registry http://localhost:4873/
进行登录,后面这个指向还是要一直写上的 - 然后
npm publish --registry http://localhost:4873/
将我们的包上传到私服
- 由于我们发的是私服,所以这里的版本虽然已经跳到了1.0.4了,但npm官网上面我们的包版本其实还是1.0.1没有受到影响
- 而当我们进行下载的时候就可以
npm install xm-demo --registry http://localhost:4873/
,这个时候下载下来的就是1.0.4版本而不是npm官网上的1.0.1版本(因为我们指向了本地仓库的源)。其中这里需要注意我们的后缀端口,具体是多少。默认是4873,而像小满这里就使用第二种方式指定端口9999
取消后缀
-
如果每次都需要加上
--registry http://localhost:4873/
这样的一个后缀就会很麻烦,有没有什么好的解决方式? -
还记得前几章所讲的包管理器xmzs了吗?
- 我们通过这个包提供的命令
mmp add
将其添加到镜像中
- 我们通过这个包提供的命令
markdown
* 然后使用`mmp use`这个镜像
markdown
* 这时候直接`npm publish`就OK了
基本命令
- 总结上面的配置命令,还是需要记住的
sh
#创建账号
npm adduser --registry http://localhost:4873/
# 账号 密码 邮箱
sh
# 发布npm
npm publish --registry http://localhost:4873/
sh
#指定开启端口 默认 4873
verdaccio --listen 9999
sh
# 指定安装源
npm install --registry http://localhost:4873
sh
# 从本地仓库删除包
npm unpublish <package-name> --registry http://localhost:4873