写点什么

企业级 npm 仓库搭建

作者:龙之幽谷
  • 2022 年 9 月 28 日
    北京
  • 本文字数:2500 字

    阅读完需:约 8 分钟

企业级npm仓库搭建

介绍

之前写过一篇前端物料平台的搭建,其中涉及到使用私有 npm 仓库来管理前端物料,为此写一下企业的 npm 仓库搭建。


那么企业为什么要搭建私有的 npm 仓库呢,我们平时大部分使用的是 npm 官方仓库的一些依赖库,但是针对企业级,企业需要开发自己的一些组件库和工具库,这些库需要在组织内部进行管理和共享,不能够上传 npm 公有仓库中,因此我们需要搭建企业私有仓库来解决这种问题。同时搭建私有仓库,能够提升 npm 包的安装下载速度和源的稳定性,比如淘宝镜像,本质上也是私有仓库。


接下来我们介绍一下常用 npm 私有仓库框架。


1、NexusNexus 是 Maven 仓库管理器,管理开发所需要的构件。如果每次都是从 Apache 提供的 Maven 中央仓库去下载所需要的构件,那么这通常不是一个好的做法。应该在本地架设一个 Maven 仓库服务器,再代理远程仓库的同时维护本地仓库,以节省带宽和时间,那么 Nexus 可以满足这样的需求。



Nexus Repository Manager 仓库管理分为专业版和 oss 版,oss 版是免费的,专业版是收费的。


nexus 的功能非常强大。Nexus 2.x 和 Nexus 3.x 的差别也是非常大;Nexus 3.x 版本更增加了对 Docker、NuGet、npm、Bower 的支持。全面升级了页面,增加管理接口以自动管理任务,性能和用户体验也都有所改善。


2、cnpm


CNPM 是一个 Nodejs 的库,由国内 Alibaba 团队开发维护,致力于打造私有的 NPM 注册服务。当然,除了私有库功能以外,CNPM 官网 (http://cnpmjs.org/) 还提供了 NPM 同步的服务。



3、Verdaccio


Verdaccio 是一个简单的、零配置本地私有 npm 软件包代理注册表。Verdaccio 开箱即用,拥有自己的小型数据库,能够代理其它注册表(例如 npmjs.org),缓存下载的模块。此外 Verdaccio 还易于扩展存储功能,它支持各种社区制作的插件,以连接到亚马逊的 s3、谷歌云存储等服务或创建自己的插件。

下载

本次使用 Nexus 来搭建 npm 仓库,Nexus 不仅支持 npm 包,而且也支持 Maven。首先我们先去下载免费的 oss 版本,下载地址为https://www.sonatype.com/download-oss-sonatype



在这里下载了 nexus-3.31.1-01-unix.tar.gz,然后使用 FileZilla 上传倒服务器中,执行解压命令


$ tar -zxvf nexus-3.31.1-01-unix.tar.gz -C ./
复制代码


解压到当前目录。



解压后会有两个文件夹,nexus-3.31.1-01 和 sonatype-work。nexus-3.31.1-01 是 nexus 核心文件,包含 Nexus 运行所需要的文件,如运行脚本,依赖 jar 包等,sonatype-work 是仓库的工作目录,包含 Nexus 生成的配置文件、日志文件、仓库文件等。


nexus-3.31.1-01 目录


  • bin:包含 nexus 的启动脚本和相关配置

  • etc: jetty、karaf 等配置文件

  • lib: java 架包库

  • public:关于 nexus 应用在本地跑起来所需要的资源

  • system:应用所有的插件和组件

  • LICENSE.txt 和 NOTICE.txt :版权声明和法律细则


sonatype-work\nexus3 目录


  • blobs:创建 blob 的默认路径,当然也可以重新指定

  • cache:当前缓存的 karaf 包的信息

  • db:OrientDB 数据库的数据,用于存储 nexus 的元数据的数据库

  • elasticsearch:当前配置的 Elasticsearch 状态

  • keystores:自动生成的关于资源库的 ID 主键

  • log:运行实例生成的日志文件

  • tmp:用于存储临时文件的目录

配置

我们打开 nexus-3.31.1-01 目录下 etc 目录下可以看到众多的配置文件。



我们可以编辑其中的 nexus-default.properties 文件,可以修改默认的端口。


启动与关闭

然后我们进入 bin 目录下执行 ./nexus start 即可启动。当然也可以使用./nexus run 启动。区别在于:start 以守护线程方式启动,run 以非守护线程方式启动。


$ ./nexus start$ ./nexus run
复制代码


启动时可能比较慢,需要多等一会,如果想看启动日志情况可以进入 sonatype-work 目录。


#进入sonatype-work目录的nexus3日志目录$ cd sonatype-work/nexus3/log#查看实时日志$ tail -f nexus.log
复制代码


关闭我们可以使用 ./nexus stop 命令来关闭。


$ ./nexus stop
复制代码

访问

打开浏览器输入:http://ip:8081即可访问,这里注意在nexus2的版本访问地址是http://ip:8081/nexus,在nexus3版本直接ip+端口就可以访问了。



然后我们点击 Sign in 进行登录,管理员账号默认为 admin,弹框会提示 admin 的密码存放在 sonatype-work/nexus3/admin.password 中,我们可以使用其密码进行登录,登录后会提示更改密码,此后 admin.password 也就无效了。


配置 npm 私有仓库

nexus 默认没有 npm 私有仓库,需要我们自己去创建。首先我们先在管理员配置中,仓库下打开 blob 存储,点击创建 blob 存储,为 npm 私库创建一个单独的私有空间。



选择 File 类型,输入名称点击 create blob store 即可。



然后再分别创建三种类型的 npm 仓库:hosted、proxy、group。


  • hosted:本地存储,你可以上传你自己的项目到这里面。

  • proxy:提供代理其他仓库的类型,即你可以设置代理,设置了代理之后,在你的 nexus 中找不到的依赖就会去配置的代理的地址中找。

  • group:组类型,它可以包含前面两个,是一个聚合体。一般用来给客户一个访问 nexus 的统一地址。


简单的说,就是你可以上传私有的项目到 hosted,以及配置 proxy 以获取第三方的依赖(比如可以配置中央仓库的地址)。前面两个都弄好了之后,在通过 group 聚合给客户提供统一的访问地址。


我们先创建这三个对应的仓库。



npm-hosted

输入 Name,选择 Blob store 和 Deployment policy。


  • Name:定义一个名称 npm-hosted。

  • Blob store:我们下拉选择前面创建好的专用 blob:npm-blob。

  • Deployment policy:开发环境,我们运行重复发布,因此 Delpoyment policy 我们选择 Allow redeploy。


npm-proxy

输入 Name,远程仓库地址以及选择 Blob store。


  • Name:定义一个名称 npm-proxy。

  • Remote storage:上游远程仓库地址,这里填写: https://registry.npmjs.org也可以填写淘宝镜像地址。

  • Blob store:和 hosted 一样选择我们创建好的 npm-blob。


npm-group

同样输入名称 Name,选择创建好的 Blob store 把前两个创建的代理仓库(npm-proxy)和私有仓库(npm-hosted)从 Avaliable 区移动到 Members 区即可。



创建完成后即可使用了。


首先我们获取一下 npm-group 对外提供的地址即私库地址。



然后我们可以使用 npm install 命令来安装依赖包。


npm install --registry http://ip:port/repository/npm-group/
复制代码

参考文章


看完觉得对您有所帮助别忘记关注呦


发布于: 刚刚阅读数: 4
用户头像

龙之幽谷

关注

还未添加个人签名 2018.02.21 加入

还未添加个人简介

评论

发布
暂无评论
企业级npm仓库搭建_前端_龙之幽谷_InfoQ写作社区