上篇文章我写了关于verdaccio私服在服务端的搭建过程,这篇文章我来分享一下客户端如何与私服连接,下载私服的包以及更新和发布公司内部封好的包。(ps:全文中的默认为我们的私服地址。)
一、与私服连接
当我们用type命令查看npmrc文件内容,此文件内容是npm镜像下载源的地址。windows下的type命令同Linux的cat命令。
type .npmrc
1
此时我们可以看到当我们使用npm下载包时候,镜像源是npmjs.ory. 所以当我们用命令
npm set registry :4873
1
时我们可以把下载镜像源的地址切换到从我们的服务器上下载。这里的npmrc文件里面内地址也就会易主咯~
二、 安装nrm
nrm是 npm registry 管理工具, 能够查看和切换当前使用的registry。不安装也可以,安装会更高效。
2.1 命令安装
npm install -g nrm
1
2.2 添加私服地址到nrm管理工具
这里的my50是我们给自己的私服地址起的别名,为了切换和使用方便。
C:\Users\Hepburn Yang>nrm add my50 :4873 #添加本地私服地址
add registry my50 success
1
2
3
将npm包的下载地址改到my50的私服。
C:\Users\Hepburn Yang>nrm use my50
verb config Skipping project config: C:\Users\Hepburn Yang/.npmrc. (matches userconfig)
Registry has been set to: :4873/
1
2
3
4
使用nrm ls可查到我们可以使用的所有镜像源地址,* 后面是当前使用的,如果我们不想从私服上下载包,就可以用上一步骤的nrm use命令,use其它的地址,将下载地址改到别的服务器。
C:\Users\Hepburn Yang>nrm ls
npm ---- https://registry.npmjs.org/
cnpm ---
taobao - https://registry.npm.taobao.org/
nj ----- https://registry.nodejitsu.com/
rednpm -
npmMirror https://skimdb.npmjs.com/registry/
edunpm -
* my50 --- :4873/
1
2
3
4
5
6
7
8
9
10
2.3 nrm小结:
其实nrm只是个npm registry 管理工具,有了它可以让我们切换和查看registry 地址更方便快捷,即便没有它,我们直接用npm的set命令也可以切换地址,用type命令也可以查看地址,只不过用nrm更便捷,用不用随你了,觉得方便就用。
三、发布包
因为我这没有现成的要发布的包,我就新建一个空文件夹来做一个测试,随便建一个js文件,或其他的文件,我这里建了个名为npmtest的文件夹,里面有一个index.js文件。
现在我们定位到此文件根目录下,也就是npmtest下用npm init命令初始化包,也就是填写包名,和其他的信息,这里做测试用,就没怎么填一路回车了,完了之后会自动生成一个package.json文件。
最后用npm publish命令发布包.
npm publish
#已经切换到我们私服地址的情况下
npm publish --registry :4873 #未切换到我们的私服时,直接加后缀可以发布到私服上。
1
2
四、下载包
最后验证一下,我们再新建一个文件夹 npmtest2 ,定位到这个文件夹下 用命令
Npm install npmtest 下载我们刚发布到私服上的包(npmtest).看效果,这里下载好了之前发布到私服上的包,里面有我们之前写好的index.js文件。
npm install npmtest
1
总结
npm install
1
这个命令是默认下载当前定位文件夹下package.json文件中需要的所有包,包括其间接依赖的包。第一次下载之后的包都会缓存在我们的私服上,然后后期下载的时候从私服下载,就不会再从npmjs上下载包,但是它下载每个包的时候都会再走一遍npmjs去检查包的版本,即便不下载资源,但这无疑也浪费了时间。经验证发现,我们的package-lock.json文件在此刻起了大作用,因为package-lock.json文件本来就是更新node库后自动生成的文件,里面包含了node库中所有包的下载地址当前版本以及包之间的依赖关系,既然package-lock.json稳定了版本,所以当我们项目中包含了这个文件时,我们下包时就会根据package-lock.json的稳定版本来,就不会再去npmjs上去检查了,这样会极大的提升下载包的速度。所以项目中一定要有稳定的package.json和package-lock.json文件,并及时更新这两个文件。
---------------------
作者:杨晓慧_Hepburn
来源:CSDN
原文:https://blog.csdn.net/YYZZHC999/article/details/80114218
版权声明:本文为博主原创文章,转载请附上博文链接!