我搭建私有库的原因很简单。我目前正在开发一个供公司内部使用的组件库。我不想注册npm,也不想等待npm的审核。我只是想有个仓库可以快速测试发布自己的npm包。如何搭建目前最方便的解决方案是verdaccio,搭建起来很方便,一般几分钟就搞定,需要的工具:安装nodejs和npm,全局安装verdaccioshh和pm2(不需要,如果你想部署到远程服务器)接下来详细介绍搭建步骤。全局安装verdaccio在安装verdaccio之前,假设大家已经默认安装好了nodejs和npm环境,这里就不赘述了。如果是本地搭建的,可以直接进行下面的操作。如果是搭建在远程服务器上,通过ssh连接远程服务器即可。#全局安装npminstallverdaccio-g修改verdaccio的配置修改配置的目的是让我们的私有库可以通过公网的ip访问。首先查看npm全局安装包所在位置:npmroot-g/usr/local/Cellar/node/8.4.0/lib/node_modules其中/usr/local/Cellar/node/8.4.0/lib/node_modules全局安装我们的npm包的地址。按以下命令查看配置文件所在的位置然后vimdefault.yaml配置情况如下##这是默认的配置文件。它允许所有用户做任何事情,#所以不要在生产系统上使用它。##在这里查看更多配置文件示例:#https://github.com/verdaccio/verdaccio/tree/master/conf##path到包含所有包的目录storage:./storage#到包含插件的目录的路径includeplugins:./pluginsweb:#WebUI默认启用,如果你想禁用它,只需取消注释这一行#enable:falsetitle:Verdaccioauth:htpasswd:file:./htpasswd#允许注册的最大用户数,默认为“+inf”。#您可以将其设置为-1以禁用注册。#max_users:1000#我们可以访问的其他已知存储库列表proxy:npmjs'**':#允许所有用户(包括非认证用户)阅读和发布#所有包##你可以指定用户名/组名(取决于你的auth插件)#和三个关键字:“$all”、“$anonymous”、“$authenticated”access:$all#允许所有已知用户发布包#(任何人都可以默认注册,记得吗?)publish:$authenticated#如果包在本地不可用,代理请求到'npmjs'registryproxy:npmjs#你可以为传入连接指定HTTP/1.1服务器保持活动超时(以秒为单位)。#A0值使http服务器的行为类似于8.0.0之前的Node.js版本,后者没有保持活动超时。#解决方法:通过给定的配置,您可以解决以下问题https://github.com/verdaccio/verdaccio/问题/301。设置为0,以防60不够。服务器:keepAliveTimeout:60#要使用`npmaudit`取消注释以下部分middlewares:audit:enabled:true#logsettingslogs:-{type:stdout,format:pretty,level:http}#-{type:file,path:verdaccio.log,level:info}#listenlisten:0.0.0.0:4873最后一行是新添加的配置,支持外网ip访问listen:0.0.0.0:4873然后输入:wq保存并退出vim模式,启动verdaccio服务即可。我一般都是通过pm2启动的。原因很简单。关闭doc窗口后,服务不会停止,我们启动的服务可以很好的管理。使用pm2常用命令安装:npminstallpm2-g启动:pm2startverdaccio停止:pm2stopverdaccio重启:pm2restartverdaccio删除应用:pm2deleteverdaccio查看日志:pm2logsverdaccio我们来启动服务看看效果:pm2startverdaccio至此,npm私有库搭建完成。图为我最近发布的一个基于Vue的组件库。后面会介绍组件库的编译和发布。感兴趣的朋友关注下。
