npm 切换源_【分享吧】verdaccio搭建npm私有仓库

verdaccio搭建

npm私有仓库

前言

       随着前端技术的不断发展,前后端分离已成为主流趋势,这就导致了前端承受的分工压力会越来越大,前端项目也将变得十分庞杂,因此在技术方面会考虑按照业务线进行拆分成几个业务系统。这些系统之间如何共用一套公司内部的组件资源库?如果每个工程都拷贝一份,会增加大量的升级和运维工作。上传到npm库是个很不错的选择,不同的系统都指向一个npm源,然后通过npm install就可以搞定,所以搭建一套公司内部的npm库就显得非常有必要。

01

搭建npm私服的好处

  • 依赖包在公司内网的服务器上,不需要发布到外网

  • 下载依赖包和发布包都可以配置权限

  • 各个项目依赖包可以直接缓存到npm私有服务器上,不用在外网的npm中下载,下载速度得到提升

02

Verdaccio简介

       Verdaccio 是一个简单的、零配置本地私有 npm 软件包。它是 sinopia 开源框架的一个fork ,github start 7000+。由于sinopia 三年前就已经没有人进行维护了,缺陷也比较多。Verdaccio成为了市场上最主流的本地私有npm插件。Verdaccio开箱即用,拥有自己的小型数据库,能够代理其他注册表(例如npmjs.org),一路缓存下载的模块。

03

 离线搭建verdaccio环境

       根据公司信息安全要求,开发工作均在内网进行,为了不影响开发效率,让开发人员可以更方便的使用npm服务器,就必须自建npm私有仓库。Verdaccio通常会使用npm进行安装使用,因在内网中无法执行安装,我们使用官方提供的docker镜像安装,这对于开发,持续集成还是比较简单的。在服务启动方面,建议不要用root用户, 不然会有一些特殊的问题。具体步骤如下:

  •  安装docker,配置docker服务

3b01e7d38921c8352e1f2c08bebe64ec.png
  •  加载docker镜像,使用bridge方式搭建网桥

01b08d7458f464e953a742b5bfec78ea.png
  •  将启动容器加入脚本(针对redhat,其他系统略有不同)

e9a9676b8ddee67064bc4f8f4866265a.png
  •  运行Verdaccio镜像,创建一个容器,依赖包通过在外网打包,上传至内网服务器verdaccio/storage目录下即可。

16d3e307916a926f869ea7f276dbc450.png

04

Verdaccio的使用

       我们目的就是为了把项目中需要用到的依赖包放到内网,直接从内网下载。我们如何把包放到搭好的verdaccio里面呢,具体的流程如下:

81e04d374810ac85341aa981e39b249f.png

       verdaccio 的特点是,安装在哪个目录下运行,就会在对应的目录下创建自己的文件。目录下默认有两个文件:config.yaml和storage,htpasswd 是添加用户之后自动创建的;第一次启动默认的config.xml文件是从原始文件default.yaml拷贝而来,可先修改verdaccio 原始的default.yaml。verdaccio继承了sinopia,端口号4873依然不变。

dc8a400317e10ca4c117cca61e95c11d.png
  •  运行Verdaccio。正常启动后,通过虚拟机地址、端口进行访问,看到如下界面,就证明我们的私服搭建成功了。

806d662287b1bb7f421fbcb434e3dae9.png
  •  配置npm,使用npm publish命令发布包:

34420c3b67735e2c7a06e0017f8de99e.png
  •  npm install,这个命令是默认下载当前定位文件夹下package.json文件中需要的所有包,包括间接依赖的包。第一次下载之后的包都会缓存在我们的私服上,之后我们就可以在私服上下载依赖包。(小贴士:npm install执行成功后,会在项目下自动生成package-lock.json文件,如果切换npm私服地址,需删除该文件后重新执行npm install)

d98132e0bc227fc0d3f416c7d88d8794.png

05

 踩过的坑

  •  node-sass报错

       部署到内网后npm install缓存包时如果用到node-sass,会出现报错,解决方法是从有外网的电脑里面把C:\Users\Acer\AppData\Roaming\npm-cache\node-sass\里的win32-x64-57_binding.node拷出来,放到需要npm install的内网电脑中,然后新建系统变量。变量名:SASS_BINARY_PATH变量值:win32-x64-59_binding.node的所在目录位置。再次执行npm install下载node-sass就正常了。

  •  npm-shrinkwrap.json版本锁定报错

       在项目中使用npm-shrinkwrap.json来锁定版本,在安装包的时候可能会报错“Maximum call stack size exceeded”,删除npm-shrinkwrap.json、yarn.lock和node_modules。重新生成package-lock.json文件即可。

6be81836c60a9623d1d7c865867903bc.gif

hi,新朋友扫码关注我们呦~

6d9e8daee8a4862f68c1d69574f20a35.png

Merry Christmas

aabf1418981b9a42383c1dc6c24ae11e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疫情中的人工智能和大数据“社会实验”,将如何影响我国经济社会发展

来源:三思派最近,上海市科学学研究所编制了《人工智能、大数据支撑新冠肺炎疫情防控报告(1.0版)》。报告预测,疫情过后,人们的生活和工作方式都可能向更加智能化方向发展,一个以智能化、无人化、…

IBM强化Watson对商业语言的理解能力—AI辩论一些关键技术首次商业化

来源:IBM中国2020 年 3 月 11 日,商业人工智能领域领军者 IBM[1]宣布推出几项全新的 IBM Watson 技术,旨在帮助组织机构更清晰地识别、理解和分析英语语言中某些最具挑战性的方面,从而获取更多洞察。全新的 IBM Watson 技术代表着…

删除快捷方式小箭头_修复快捷方式的箭头图标

前一天晚上,用360清理缓存文件后,早上起来一看快捷方式的箭头图标不见了,左下角变成了一片白色。试了很多方法,比如说删除iconcache.db,然后重启资源管理器等等,发现没有用。然后,装上360桌面助…

如何实现对外部php文件的调用,laravel如何引用外部文件

laravel如何引用外部文件,主视图,视图,文件,方式,内容laravel如何引用外部文件易采站长站,站长之家为您整理了laravel如何引用外部文件的相关内容。(1)、首先在app\Http\routes.php中定义路由;Route::get(view,ViewControllerview);Route::get(article,V…

清华大学人工智能深度报告:八大维度解析机器学习

来源:世界人工智能大会机器学习(Machine Learning,常简称为 ML)已经成为了当今的热门话题,从机器学习概念诞生到机器学习技术的普遍应用经过了漫长的过程,众多优秀的学者为推动机器学习的发展做出了巨大的贡…

【周末阅读】5G时代新型基础设施建设白皮书

来源:智东西【导读】当今世界,新一代信息技术与经济社会深度交融,正引领全球新一轮科技革命和产业变革,其速度、广度、深度前所未有。加快 5G 商用和人工智能、工业互联网、物联网等新型基础设施建设是发挥投资关键作用&#xff0…

pandas取出某一列_Pandas高级运算 | apply与applymap方法详解

大家好,今天我们来聊聊pandas的一些高级运算。在之前文章中,我们介绍了panads的一些计算方法,比如两个dataframe的四则运算,以及dataframe填充Null的方法。今天这篇文章我们来聊聊dataframe中的广播机制,以及apply函数…

深度|​揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活!

来源:电子工程世界AI 和 5G 与机器人技术结合,正在不断催生新的消费电子品类。AI 解决机器理解世界,以及人机交互的问题。5G 拓展机器人的活动边界,并为机器人提供更大的算力和存储空间(云协作机器人) 。根…

点击按钮,缩放图片(img.width、img.style.width、img.offsetWidth)

前几天在慕课网上看到一个关于图片缩放的教学视频,因为当时对老师使用img.width,而不是使用img.style.width而感到奇怪,所以周末得空了,想来自己试着写出来,相关视频网址如下:http://www.imooc.com/video/1111&#xf…

sql怎么继续编辑已经保存的代码_某团购CMS的GETSHELL操作代码审计

作者:会上树的猪合天智汇 0x00 写点废话在渗透测试中,获取一个webshell应该是我们不屑的追求,今天要通过这个CMS从代码的角度看一下可利用的getshell的方法。这一次的代码审计需要借助工具来定位可能存在的漏洞点,选择Seay源代码审…

测温枪的工作原理全面解析,如何测出你的温度

来源:世界先进制造技术论坛内容来源:网络测温枪,学名是“红外线测温仪”或者“红外线辐射测温仪”。它的原理是:被动吸收目标的红外辐射能量,从而获得物体温度数值。这次疫情,让这个小东西一下子&#xff0…

mysql不要放docker,Docker从入门到放弃

本文将以比较简单的的方式让大家理解docker,以平时常用到的测试环境为主,从用开始,慢慢理解docker。0x00 用docker进行漏洞测试0x01 docker运行busybox0x02 Docker 搭建运行apache-php环境0x03 用Dockerfile自动化构建可ssh登陆的镜像0x04 Do…

一个对称性解释三个宇宙学难题;引力波碰撞会发光?粘液霉菌助力寻找宇宙网 | 一周科技速览...

来源:返朴撰文 :董唯元、杨凌、顾舒晨、洪俊贤、太阁尔、姜小满目 录1. 一个对称性解释三个宇宙学难题2. 引力波碰撞会发光?3. 粘液霉菌助力寻找宇宙网4. 听,是杂质原子的声音5. 更快了!地球的大型生态系统在崩溃6. 究…

一ElasticSearch安装启动

参考官方:https://www.elastic.co/downloads/elasticsearch 转载于:https://www.cnblogs.com/tangyongathuse/p/6840231.html

结构化数据不应该被人工智能忘之脑后 !

来源:Ihab Ilyas在处理非结构化数据的问题上,人工智能和深度学习方法一直都表现出众且广为人知,无论是在自然语言处理、知识库自动构建,还是图像视频的识别和生成应用中,都有很多成熟案例。然而对于结构化数据的研究&a…

导入自定义模块syntaxerror: invalid syntax_技术分享 | Quill的模块机制

DevUI技术体验部是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部上百个中后台系统,主打产品 DevUI Design 服务于设计师和前端工程师。官方网站:devui.design。Ng组件库:ng-devui。DevUI Design&#xff…

我们对时间的理解错了吗?

来源: 利维坦文/Claudia Hammond译/boomchacha校对/Rachel原文/www.bbc.com/future/article/20191203-what-we-get-wrong-about-time“时间”是常见的名词。我们都熟知时间流逝的感觉:现在变成过去;今天变成昨天。你要是住在温带,…

SVN使用过程中遇到的一些问题

更新svn的客户端TortoiseSVN后 ,之前使用svn管理的文件的关联图标消失了 说明:下面的解决方法及图片来自博客:装了SVN,你的关联图标变了没有? 解决办法:在同步的文件点击右键如下图 ...现则Settings,出现的…

脑神经计算建模揭示前额叶皮层不同类型中间神经元在信息维持中的作用

来源:智能的本质与未来尽管占比相对锥形神经元数量少,但是中间神经元在大脑皮层实现认知功能中的作用却不容小觑。中间神经元的显著特点就是种类丰富,因此对不同类型中间经元在特定认知功能的分工作用的探索是揭示智能机制的关键之一。中国科…

支付宝支付-刷卡支付(条码支付)

此项目已开源欢迎Start、PR、发起Issues一起讨论交流共同进步 https://github.com/Javen205/IJPay http://git.oschina.net/javen205/IJPay 在官方的产品是叫做当面付 1、什么是当面付呢? 简单的讲就是条码支付(刷卡支付)、扫码支付、声波支付。 【官方是这样解释的…