如何搭建一个 npm 私服

最近在开发一个脚手架工具,但是在开发调试阶段不能发布到 npm 官方仓库上,而且后期也只希望在部门内部使用,因此就有了搭建 npm 私服的需求。虽然 npm 官方提供收费的私有仓库,考虑到现在项目需求,使用 verdaccio 不仅免费而且还简单好用。

1. 如何安装

使用下面的命令全局安装:

# 使用 npm
$ npm i verdaccio -g

# 使用 yarn
$ yarn global add verdaccio

安装完成之后运行:

$ verdaccio
info --- Creating default config file in /root/.config/verdaccio/config.yaml
warn --- config file  - /root/.config/verdaccio/config.yaml
warn --- Plugin successfully loaded: verdaccio-htpasswd
warn --- Plugin successfully loaded: verdaccio-audit
warn --- http address - http://localhost:4873/ - verdaccio/5.1.6

可以看到这边做了两件事:

  • 初始化了一份配置文件;
  • 然后在 4873 端口起了一个服务,通过这个地址可以访问 web 页面,查看里面发布了哪些包;

这里有个问题,现在这个进程在前台运行,如果我们关掉 shell 窗口,这个进程就退出了。因此我们需要安装一下 pm2 进程守护,让 verdaccio 在后台运行。

$ yarn global add pm2

然后执行命令:

$ pm2 start verdaccio

此时进程就在后台运行了,我们可以通过下面的命令查看一下监听 4873 端口的进程:

$ lsof -i :4873
COMMAND      PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
Verdaccio 625330 root   20u  IPv4 10623850      0t0  TCP *:4873 (LISTEN)

当我们需要退出这个进程的时候,只需要执行下面的命令:

$ pm2 stop verdaccio

然后需要改下配置文件,重点改两个地方:

# 添加淘宝镜像
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
  taobao:
  	url: https://registry.npm.taobao.org/

packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated

    #代理 表示没有的仓库会去这个npmjs 里面去找 ,
    # taobao 又指向  https://registry.npmjs.org/ ,就是上面的 uplinks 配置
    proxy: taobao

  '**':
    # 三种身份,所有人,匿名用户,认证(登陆)用户
    # "$all", "$anonymous", "$authenticated"

    #是否可访问所需要的权限
    access: $all

    #发布package 的权限
    publish: $authenticated

    # 如果package 不存在,就向代理的上游服务发起请求
    proxy: taobao

# 监听的端口 ,重点, 不配置这个,只能本机能访问
listen: 0.0.0.0:4873

我们可以通过下面的地址远程访问 web 页面,如果你用的是阿里云服务器,记得在安全组中允许 4873 端口访问:

http://<服务器公网IP>:4873/#/

2. 发布一个包

我们先将 npm 源设为刚才创建的服务地址:

$ npm config set registry http://localhost:4873

如果不希望修改全局的 npm 镜像源,而是只针对某个项目使用私有的 npm 仓库,也可以在项目根目录下添加 .npmrc 文件,内容如下:

registry=http://localhost:4873

发布之前我们需要先创建账号并登录。默认情况下 verdaccio 允许任何人创建账号,执行命令:

$ npm adduser

按照提示输入用户名、密码、邮箱等信息,完成之后会自动登录,用下面命令查看当前登录用户:

$ npm who am i

如果已经注册过账号,直接登录即可:

$ npm login

最后在 package.json 中设置好版本,然后发布:

$ npm publish

参考

verdaccio 官方文档
使用verdaccio 搭建私有npm 服务器
npm私服搭建—verdaccio方案及其最佳实践

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值