一、Verdaccio是什么?
Verdaccio
是一个 Node.js创建的轻量的私有npm代理注册源(proxy registry)
通过Verdaccio搭建私有npm服务器有着以下优势:
- 零配置:无需安装数据库,基于nodejs,安装及运行。
- 使用方便:将内部高复用的代码进行提取,方便在多个项目中引用。
- 安全性:仓库搭建在局域网内部,只针对内部人员使用。
- 权限管理:对发布和下载npm包配置权限管理。
- 加速包下载:将下载过的依赖包进行缓存,再次下载加快下载速度。
Verdaccio是sinopia开源框架的一个fork,由于sinopia作者两年前就已经停止更新,坑比较多,因此Verdaccio是目前最好的选择
二、安装Verdaccio以及pm2
全局安装Verdaccio:
# 全局安装 npm install -g verdaccio
通过命令行启动的话,如果终端停止了,那我们的服务器也就停止了,因此一般我们通过pm2启动守护进程
npm install -g pm2 pm2 start verdaccio
启动成功可以进入http://localhost:4873/
页面
Verdaccio安装好后,我们可以更改npm源为本地地址:
# 设置npm使用的源为本地私服 npm set registry http://localhost:4873/
或者针对某个依赖安装时选用自己的源地址(推荐):
# 例如安装demo依赖 npm install demo --registry http://localhost:4873
三、nrm管理镜像源地址
此时如果我们想再次切换到淘宝或者其他的镜像地址,来回切换过于麻烦
我们可以通过nrm
这个工具来管理我们的源地址,可以查看和切换地址
npm install -g nrm
安装后我们可以通过nrm add [name] [address]
这个命令来新增一个源地址:
# 例如增加名为localnpm的源地址http://localhost:4873/ nrm add localnpm http://localhost:4873/
使用nrm ls
可以查看我们使用的所有源地址,带*
是正在使用的地址
通过nrm use [name]
来切换地址:
四、注册与发包
1. 注册用户:
npm adduser --registry http://localhost:4873/
输入 username、password 以及 Email 即可
2. 登录
npm login --registry http://localhost:4873
3. 上传私有包
# 在当前私有仓库下执行 npm publish --registry http://localhost:4873
注意:
1、当前私有仓库必须包含 package.json 文件
2、每次发布的时候,都需要使用
npm version v1.x.x
更新版本,并且保证仓库是干净的
上传成功后可查看到上传的包:
4. 移除一个包
// 删除特定版本 npm unpublish <package-name>@<version> // 删除整个包(谨慎使用): npm unpublish <package-name> --force
请注意,如果你要删除整个包,必须使用 --force
标志。
五、包名规范
在npm(Node Package Manager)中,包名前面带有@
符号表示该包是一个范围包或者组织包。
- 范围包(Scoped Packages):
- 当一个npm包以
@scope/name
的形式出现时,它标识这是一个有命名空间的包。scope
是可选的命名空间前缀,用于区分不同组织、项目或个人的包。例如,@mycompany/my-package
表明这个包属于mycompany
这个组织或团队,并且包的实际名称是my-package
。通过这种方式,可以避免全局包名空间中的命名冲突。
- 组织包(Organization Packages):
- 类似地,许多开源组织或公司在npm上拥有自己的组织账户,发布的包也会带有组织名作为前缀,比如
@angular/router
或@vue/cli
等。这些包都是相应组织管理并发布的官方组件或工具。
因此,@
符号在npm中不仅用作版本控制时指定版本范围(如 npminstall react-router@2.8.1
),还用来创建和管理具有特定命名空间的包。