npm 私服工具verdaccio 搭建(二) (ps:欲使用sinopia搭建私服的一定要看过来)

引言

上篇文章我写了关于verdaccio私服在服务端的搭建过程,这篇文章我来分享一下客户端如何与私服连接,下载私服的包以及更新和发布公司内部封好的包。(ps:全文中的http://192.168.XX.50默认为我们的私服地址。)


一、与私服连接

当我们用type命令查看npmrc文件内容,此文件内容是npm镜像下载源的地址。windows下的type命令同Linux的cat命令。

type .npmrc

此时我们可以看到当我们使用npm下载包时候,镜像源是npmjs.ory. 所以当我们用命令

npm set registry http://192.168.XX.50:4873 

时我们可以把下载镜像源的地址切换到从我们的服务器上下载。这里的npmrc文件里面内地址也就会易主咯~


二、 安装nrm

nrm是 npm registry 管理工具, 能够查看和切换当前使用的registry。不安装也可以,安装会更高效。

2.1 命令安装

npm install -g nrm

2.2 添加私服地址到nrm管理工具

这里的my50是我们给自己的私服地址起的别名,为了切换和使用方便。

C:\Users\Hepburn Yang>nrm add my50 http://192.168.XX.50:4873    #添加本地私服地址

    add registry my50 success

将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: http://192.168.XX.50:4873/

使用nrm ls可查到我们可以使用的所有镜像源地址,* 后面是当前使用的,如果我们不想从私服上下载包,就可以用上一步骤的nrm use命令,use其它的地址,将下载地址改到别的服务器。

C:\Users\Hepburn Yang>nrm ls

  npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
  taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/ 
* my50 --- http://192.168.XX.50:4873/

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 http://192.168.XX.50:4873   #未切换到我们的私服时,直接加后缀可以发布到私服上。

这里写图片描述


四、下载包

最后验证一下,我们再新建一个文件夹 npmtest2 ,定位到这个文件夹下 用命令
Npm install npmtest 下载我们刚发布到私服上的包(npmtest).看效果,这里下载好了之前发布到私服上的包,里面有我们之前写好的index.js文件。

npm install npmtest

这里写图片描述


总结

npm install    

这个命令是默认下载当前定位文件夹下package.json文件中需要的所有包,包括其间接依赖的包。第一次下载之后的包都会缓存在我们的私服上,然后后期下载的时候从私服下载,就不会再从npmjs上下载包,但是它下载每个包的时候都会再走一遍npmjs去检查包的版本,即便不下载资源,但这无疑也浪费了时间。经验证发现,我们的package-lock.json文件在此刻起了大作用,因为package-lock.json文件本来就是更新node库后自动生成的文件,里面包含了node库中所有包的下载地址当前版本以及包之间的依赖关系,既然package-lock.json稳定了版本,所以当我们项目中包含了这个文件时,我们下包时就会根据package-lock.json的稳定版本来,就不会再去npmjs上去检查了,这样会极大的提升下载包的速度。所以项目中一定要有稳定的package.json和package-lock.json文件,并及时更新这两个文件。

猜你喜欢

转载自blog.csdn.net/yyzzhc999/article/details/80114218