① 私服是什么?

私服是指在企业内部服务器搭建一个服务,用来存储前端需要的依赖**

②私服用来干什么?

现在前端vue、angular、react框架在构建项目时总会用到些依赖,那我们直接通过npm install 去下载的时候访问的是默认好的国外的npm源(即:https://registry.npmjs.org),大家已经深有体会,有时候下载会很慢,甚至下载失败,所以我们有了淘宝镜像(即:https://registry.npm.taobao.org)。

有同学说那其实用淘宝源就够了,没必要用其他了。

然而,如果我们把前端所需要的依赖项全部存在公司服务器上,每个依赖在初次install的时候会同时存储在公司服务器,以后每次用的时候直接去取,岂不让速度更上一个台阶?

③搭建私服

步骤一: 先配置好nexus3,我们在nexus3上搭建npm私服(我们java同事已经帮忙配置好了nexus3,具体的配置方法可去访问度娘)

步骤二: 配置npm的三个类型 hosted 、proxy 、group

具体配置方法,可参考文章

④查看当前npm源的地址

npm config get registry

⑤修改npm源的地址

这里以修改为淘宝镜像为例,实际换源需要将地址改为公司私服地址

npm config set registry https://registry.npm.taobao.org

我的应用场景

1、我的状态如下:

使用vue框架构建的项目
已经在开发中期,
项目部署使用的是 JenKins

2、我遇到的问题:

受公司网络影响,不使用私服的话,每次发版都会再次install,
而只要install,node_modules中依赖的依赖就会去请求github上的资源,
这时候会出现构建时间过长 或者构建失败的情况。(构建失败是因为请求GitHub被劫持)

3、我是如何解决的?

首先,按上面的步骤搭建前端npm私服(看上面①②③)
其次,更改本地镜像源地址为公司npm私服地址(修改方法看上面④⑤)
最后,删除项目中的node_modules文件,重新install

此时,你会发现项目中的package-lock.json文件中依赖包的地址变成了公司私服地址
如此一来,以后每次构建项目的时候,Jenkins文件都会重新install,而install的话实际资源是从私服直接获取的

亲测,现在在Jenkins 里构建前端项目时 70s左右就好了(见下图),而且不会构建失败

nexus docker私有仓库 保留5个版本_html5

4、扩展话题: 如何解决公司内网劫持GitHub的问题 ?

第一步:在该网站( http://ping.chinaz.com/github.com ) 找一个响应GitHub 最快的IP,然后copy

	第二步:打开本地hosts文件,配置( 配置如下图 )
				一般hosts地址在: C:\Windows\System32\drivers\etc\ 中

nexus docker私有仓库 保留5个版本_nginx_02


感谢观看!

有问题可在评论区评论