使用verdaccio搭建npm私服仓库

为什么需要搭建私有 npm


-搭建公司内部中台做铺垫,代码属于公司资产
-团队内部使用一些待完善package半成品
-内部使用更安全
-下载package更快,权限可配置


包管理的私服工具选型

maven:更偏向后台使用
cnpm: 需要安装MySQL,配置比较麻烦
Verdaccio 是一个 Node.js创建的轻量的私有 npm proxy registry, forked 于 [email protected]
1.与 yarn, npm 和 pnpm 100% 兼容
2.提供 Docker 和 Kubernetes 支持,相当容易安装和使用
3.发布的包是私有的并且访问权限可配置
4.Verdaccio 按需要缓存所有相关项,并在当地或私有网络下可以加速安装

服务器搭建


1.安装node
2.安装verdaccio
npm install -g verdaccio --unsafe-perm

加上--unsafe-perm选项是为了防止gyp ERR! permission denied权限问题报错

3.启动verdaccio
verdaccio

执行结果如下:

[root@webserver ~]# verdaccio
*** WARNING: Verdaccio doesn't need superuser privileges. Don't run it under root! ***
 warn --- config file  - /root/.config/verdaccio/config.yaml
 warn --- Verdaccio started
 warn --- Plugin successfully loaded: verdaccio-htpasswd
 warn --- Plugin successfully loaded: verdaccio-audit
 warn --- http address - http://localhost:4873/ - verdaccio/4.10.0

从控制台的输出,我们可以看到:
verdaccio的配置文件路径在/root/.config/verdaccio/config.yaml和默认访问地址http://localhost:4873/
在配置文件末尾增加listen: 0.0.0.0:4873保存

# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873

查看修改配置文件

// 进入verdaccio目录
[root@webserver ~]# cd /root/.config/verdaccio/
[root@webserver verdaccio]# ls
config.yaml  storage
-- 查看该目录下的文件,该目录下默认有两个文件:config.yaml和storage,添加用户之后会自动创建htpasswd

// 查看配置文件
[root@webserver ~]# vim config.yaml

verdaccio默认配置

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs
  '**':
    proxy: npmjs
logs:
  - {type: stdout, format: pretty, level: http}

在配置文件config.yaml末尾加入代码:

# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873
配置

在当前用户的 .config/verdaccio 下默认有两个文件:config.yaml 和 htpasswd。这里介绍两个比较重要的配置项,其他的可以官网上查询。

  • htpasswd
    这个文件需要创建了账号才会出现在当前目录
npm adduser --registry http://localhost:4873
Username: xxx
Password:
Email: (this IS public) [email protected]
Logged in as slweb on http://localhost:4873/. #看到这个代表成功了
[root@webserver verdaccio]# ls
config.yaml  htpasswd  storage
#这时就出现了htpasswd。然后修改vim config.yaml
[root@webserver verdaccio]# vim config.yaml
auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    # max_users: 1000
    max_users: -1  # 禁止注册

下面将使用插件注册

[root@webserver verdaccio]# sinopia-adduser
username:

注册成功

[root@webserver verdaccio]# cat htpasswd
slweb:xxxOkg:autocreated 2020-12-23T08:36:36.974Z
slweb:{SHA}xxxqUE=:autocreated 2020-12-23T08:37:50.637Z
  • url可以配置成淘宝镜像地址:https://registry.npmjs.org/
  • 权限配置(一般团队或者公司的私有项目,会采用不同的权限控制。)
    操作权限:
  • access 表示哪一类用户可以对匹配的项目进行安装(install)
  • publish 表示哪一类用户可以对匹配的项目进行发布(publish)
  • proxy 如其名,这里的值是对应于 uplinks 的
    组权限:
  • all 表示所有人都可以执行对应的操作
  • authenticated 表示只有通过验证的人可以执行对应操作
  • anonymous 表示只有匿名者可以进行对应操作(通常无用)
    例子:
packages:
  # scoped 包
  '@scope/*':
    access: $all
    publish: $all
    proxy: server2
    
  'supersecret-*':
    # 添加多个组
    access: secret super-secret-area ultra-secret-area
    publish: secret ultra-secret-area
    proxy: server1

  'private-*':
     # private-xxx 允许所有的用户安装、认证的用户发布
    access: $all
    publish: $authenticated
    proxy: uplink1
    
  'old-*':  # 不设置 `access`、`publish` 阻止对一组包的访问(不设置proxy阻止代理一组特定包)

  '**':
    # 允许所有用户 (包括为验证的用户) 安装和发布
    access: $all
    publish: $all
    proxy: uplink2

设置权限账号(安装插件完成)

npm install htpasswd-for-sinopia -g
4.使用pm2启动verdaccio

安装pm2

npm install -g pm2 --unsafe-perm

使用pm2启动verdaccio,以保证进程一直处于打开状态

pm2 start verdaccio
5、访问搭建好的私有仓库

在浏览器中打开http://47.107.60.51:4873 链接

注意:在阿里云服务器添加安全组,开放 4873 端口号,如果没有添加该端口安全组则不能在浏览器正常访问http://47.107.60.51:4873

你可能感兴趣的:(使用verdaccio搭建npm私服仓库)