使用Verdaccio搭建私有NPM库

私有NPM库

在日常的工作中,随着业务需求越来越多,可复用的代码组件也会越来越多,基本每个团队都会遇到企业私有库的问题。代码放在企业私有库上既方便管理,在后续的开发迭代中也能提升开发效率。最初呢 我们是采用统一的gitLab库存放可复用的组件,在通过webpack中配置应用地址指向组件在gitLab的位置地址,并安装。但是这种方式的弊端很多,其中当时影响我们正常打包的问题也是出在这里,当NPM升级后,运维进行项目部署时,会用最新版的NPM,这就导致了我们在项目中使用的大量基础组件下载报错。项目出现问题。

为了解决这个问题,同时将两个部门的前端封装的组件共享,决定使用Verdaccio这个工具去进行搭建前端的私有库。

什么是Verdaccio

Verdaccio 是一个 Node.js创建的轻量的私有npm proxy registry

如何使用

在我们使用之前需要清楚 Verdaccio应在什么环境下可以使用:

我们强烈建议使用最新版本的Node包管理工具,比如> npm@6.x | yarn@1.x | | yarn@2.x | pnpm@6.x。 不再支持npm@5.x或更低版本。

  1. 安装、启动

可以在全局进行安装
npm install -g verdaccio 或者 yarn global add verdaccio

安装之后 在终端中输入 verdaccio 即可启动项目;
安装之后的结果

到这里我们将私有库简单的搭建好了,接下来 我们可以访问启动命令后输出的本地路径
界面效果

  1. 修改配置
    从官网的文档上我们可以知道,在 verdaccio的默认配置和我们在真正生产上用到的还是不一样的。我们需要对默认的verdaccio配置做一下修改
    在修改之前我们需要知道在生产环境下,私有的NPM库应具有哪些功能
  • 支持对npm包的搜索
  • 权限把控,仅允许公司内部员工使用,并且员工还需要注册

我们需要深入了解以下几个API的含义
storage 已发布的包的存储位置,默认存储在 ~/.config/Verdaccio/ 文件夹下
plugins 插件所在的目录
web 界面相关的配置
auth 用户相关,例如注册、鉴权插件(默认使用的是 htpasswd)
uplinks 用于提供对外部包的访问,例如访问 npm、cnpm 对应的源
packages 用于配置发布包、删除包、查看包的权限
server 私有库服务端相关的配置
middlewares 中间件相关配置,默认会引入 auit 中间件,来支持 npm audit 命令
logs 终端输出的信息的配置

3、解决方式
权限把控指的是我们需要私有 npm 库上发布的包只能团队成员查看,除此之外人员不能看到一切信息。那么,回到 Verdaccio,我们需要:

限制 npm 包的查看,只能为已注册的用户; 禁止用户注册(在团队成员已注册完成后)
相应地,这里我们需要修改配置文件的 pacakges 和 auth。前面我们也提及了 packages 是用于配置发布包、查看包、删除包相关的权限。我们先再来看看默认的配置:默认配置中的参数all是任何人都可以访问,我们需要将它设置为有权限的人才可以访问。
默认配置
修改之后的配置
权限控制后的配置

设置好 packages 后,我们还得更改 auth 的值
默认的auth配置

通过上面的英文我们可以了解到,我们如果不设置max_users的话,注册用户是没有限制的,也就是说,当部署到外网环境后,任何人都可以通过添加用户的命令注册用户。当我们将max_users 设置为-1 就设置为了禁用注册用户。当想要设置注册用户的话,就可以将max_users 的值设置为大于0的值

基本使用

1、首先我们注册一个用户

npm adduser --registry http://localhost:4873/

2、为了在后续的使用更方便,我们可以设置添加源

npm i -g nrm

可以为nrm添加自定义源

nrm add lyrnpm http://localhostm:4873/

当添加完成后,可通过以下命令进行查看所有源

nrm ls

3、发布

npm publish

上述的过程中我们就把简单的私有库创建好了,但是verdaccio 还有其他的更深入的东西值得我们去探索。后续会继续更新组件的发布过程。

posted @ 2022-07-28 08:11  前端加油站  阅读(789)  评论(0编辑  收藏  举报