介绍

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

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

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

1、Nexus
Nexus 是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/

参考文章

  • 二丫讲梵-nexus的安装
  • 【Windows】使用Nexus搭建npm私库,管理npm包,并在项目中下载

企业级npm仓库搭建相关推荐

  1. 如何搭建私有NPM仓库,私有NPM仓库搭建教程

    1 前言 npm 是日常前端开发过程中离不开的包管理工具,可以帮助我们快速安装 npm 仓库中优秀的第三方代码包,它的出现极大地促进了 Node 及前端生态的发展繁荣. 那么问题来了,为什么要搭建私有 ...

  2. gitlab 企业级私有仓库搭建

    文章目录 一.Gitlab基本概述 1.1 什么是gitlab 1.2 Gitlab与Github区别 1.3 Gitlab服务构成 二.gitlab安装及配置 2.1 安装依赖软件 2.2 安装 G ...

  3. harbor企业级镜像仓库搭建

    前言 环境:centos 7.9 harbor-offline-installer-v2.4.3.tgz 下载harbor版本 harbor的官网:https://goharbor.io/,点下载按钮 ...

  4. Docker(仓库)——Docker Hub 公共仓库+企业级私有仓库搭建流程

    目录 一.什么是仓库 二.安装配置Docker Hub 三.配置镜像加速器 四.Registry 工作原理 五.CONTENTS 六.搭建私有仓库 一.什么是仓库 什么是仓库? • Docker 仓库 ...

  5. Docker学习四--Harbor私有仓库搭建

    Harbor企业级私有仓库搭建 安装docker-compose 进入官网 安装Harbor 下载harbor的离线安装包 进入系统进行安装 通过浏览器访问登录系统 安装docker-compose ...

  6. 如果当面试官问你懂不懂npm,你知道怎么说吗?

    1. 包管理器npm介绍 1.1 什么是npm NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准. 2020年 ...

  7. 如何搭建一个私有npm仓库

    业界主流的私有npm仓库搭建的主流方案有如下几种: 付费购买 使用 git+ssh 这种方式直接引用到 GitHub 项目地址 使用 Sinopia 使用 cnpmjs.org 第一种,一是考虑到公司 ...

  8. 阿里巴巴技术工程师撰写书单汇总!这些好书值得你一读再读!

    共享.开源是互联网技术发展的重要精神.在过去数万名阿里工程师撰写了一系列精品技术文章从算法.研发到职业人生随笔应有尽有. 本文将分享近年来阿里巴巴技术工程师们写的书汇总成一个书单分享给大家. 0.图书 ...

  9. 前端开发必备的 5 个「高薪」技能

    原文:https://blog.csdn.net/duxinshuxiaobian/article/details/108800598 开发人员的一生可以用两句话概括:编程的机器,以及不断学习新技能. ...

最新文章

  1. 双代号网络图节点编号原则_一表多图(表格/横道图/网络图)让计划编制效率提高10倍...
  2. 以智能数据架构,挖掘增长金矿
  3. JSPatch defineProtocol 实现详解
  4. 空间数据引擎oracle_GIS 与Oracle 数据库空间数据格式的转换
  5. vba 提取 json某个值_Excel中提取不重复值的方法汇总(5种基础+VBA+1个自定义函数)...
  6. Orchard Core一分钟搭建ASP.NET Core CMS
  7. gdalwarp:变形工具
  8. android 设置听筒模式切换,Android开发【06-29视频贴】切换听筒模式部分手机失效,怎么解决?...
  9. File存对象--android 的File存储到SD卡();
  10. Java中的StringBuffer、StringBuilder和包装器类型
  11. 5ecsgo启动失败2错误代码2_单机多实例--启动2个Elasticsearch Cluster
  12. 比较(0,π/2]上对sinx/x的定积分、对x/sinx的定积分与1的大小关系
  13. 微处理器 微型计算机 单片机之间有何区别,微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们之间有什么区别?...
  14. C++命名空间的定义与使用
  15. 图解“华为云潮汕火锅”的“牛里乾坤”
  16. 「JAVA」通过抢气球案例,来梳理线程基础知识
  17. 王者荣耀4.4日服务器维护,一天不玩都受不了?玩家4.4号当天利用王者荣耀BUG强行进入游戏!...
  18. 【Python】经典问题创建一个矩形类,定义方法 属性 初始化
  19. 关于webservice服务在springboot项目中的开发的介绍
  20. 棋牌类游戏测试用例怎么写?我敢打赌你绝对不知道

热门文章

  1. 微信转发软件后缀_微信视频超过800M,如何发送给好友?原来改个后缀就能发送...
  2. 格雷希尔GripSeal气动快速接头的密封原理
  3. 创维酷开系统与鸿蒙系统,在买电视时,创维、TCL、三星、LG、小米和酷开应该如何选择?...
  4. 江苏理工大学计算机专业怎么样,江苏理工学院是几本?有哪些王牌专业?
  5. 基于Python+MySQL的员工档案管理系统
  6. 青龙面板-快手极速低保版
  7. 线上展厅vr定制服务供应 广交会布展
  8. 高等数学-多元函数微分学思维导图
  9. Javac编译与JIT编译
  10. cbc系统是指_制动力分配(EBD/CBC等)