美文网首页
使用verdaccio搭建npm私服仓库

使用verdaccio搭建npm私服仓库

作者: Sunshine_Boys | 来源:发表于2020-12-23 14:24 被阅读0次

为什么需要搭建私有 npm


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


包管理的私服工具选型

maven:更偏向后台使用
cnpm: 需要安装MySQL,配置比较麻烦
Verdaccio 是一个 Node.js创建的轻量的私有 npm proxy registry, forked 于 sinopia@1.4.0
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) xxx@xxx.com
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私服仓库

    为什么需要搭建私有 npm -搭建公司内部中台做铺垫,代码属于公司资产-团队内部使用一些待完善package半成品...

  • 如何创建私有npm仓库?

    原文地址:如何创建私有npm仓库? 目录 为什么要使用私有npm仓库呢? 如何搭建呢? 如何启动verdaccio...

  • 使用Verdaccio搭建npm私服

    1、Verdaccio有什么用? 官方的说法我这里就不说了,什么npm注册表啊等等,说白了前端用这个可以搭建一个自...

  • 使用verdaccio搭建npm仓库

    目的 1.从社区的角度:把针对某一特定问题的模块发布到npm的服务器上,供社区里的其他人下载和使用,同时自己也可 ...

  • verdaccio 搭建npm私服

    目的 自己或公司其他小伙伴在做开发过程中,可能会逐渐形成有本公司风格的组件库,我们可以把这些组件传到npm上,但有...

  • 2020-01-17

    搭建verdaccio作为npm服务器使用 create verdaccio user install verda...

  • 使用Verdaccio搭建私有npm仓库

    搭建团队的私有仓库,保证团队组件的安全维护和私密性,是进阶前端开发主管路上,必不可少的一项技能。 一、原理我们平时...

  • verdaccio内网搭建npm私服

    前提:多个项目都需要用到相同的组件,内网开发无法直接使用npm来共享资源。 在网上看了很多资料决定使用verdac...

  • 【RN】基于github实现npm私有库的搭建

    介绍 在上一篇文章verdaccio+ngrok发布npm私有仓库中,我们介绍了如何使用verdaccio + n...

  • 客户端(本地)发布npm到私有仓库

    使用verdaccio在服务器搭建好私有仓库以后,接下来就是如何在本地上传npm包到私有仓库服务器了;正常发布np...

网友评论

      本文标题:使用verdaccio搭建npm私服仓库

      本文链接:https://www.haomeiwen.com/subject/nfpynktx.html