原文地址:如何创建私有npm仓库?
目录
- 为什么要使用私有npm仓库呢?
- 如何搭建呢?
- 如何启动verdaccio呢?
为什么要使用私有npm仓库呢
随着公司业务增加,项目变多,总会有很多复用的业务组件,存在不同项目,所以这个时候就要想如何将这些组件,发布到npm仓库上,让每个项目组的人,通过npm install xxx
直接下载依赖呢。but,又考虑到npm仓库是对外的,所以自己内部的业务组件部署上去不太好,那么就诞生出来了一个概念,就是npm私有仓库。其作用不仅仅是放一些业务组件,你也可以放一些自己的写的库或者公司内部使用的库等!
如何搭建呢?
搭建npm私有仓库方法有多种,这里只介绍一种较为简单的方式,就是采用verdaccio
什么是verdaccio?
Verdaccio 是一个 Node.js创建的轻量的私有npm proxy registry
它forked于sinopia@1.4.0并且100% 向后兼容。
Verdaccio 表示意大利中世纪晚期fresco 绘画中流行的一种绿色的意思。
sinopia是最初的搭建私有npm的选择,不过已经好多年不维护了,而verdaccio则是从sinopia衍生出来并且一直在维护中的,所以现在看来,verdaccio是一个更好的选择。
首先全局安装verdaccio:
npm install -g verdaccio
安装完成后: cmd 输入命令: verdaccio
如图:你可以直接打开http address地址,这就是你的仓库
接下来你要注意的一个文件就是
C:\Users\Administrator\AppData\Roaming\verdaccio\config.yaml
这个文件是主要的配置文件,里面的内容是:
#
# This is the default config file. It allows all users to do anything,
# so don't use it on production systems.
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/tree/master/conf
#
# path to a directory with all packages
storage: D:\verdaccio\storage (缓存路径,最好找一个空间比较大的盘来放,默认是在C 盘)
# path to a directory with plugins to include
plugins: ./plugins
web:
title: Verdaccio (网站title, 可以随意命名)
# comment out to disable gravatar support
# gravatar: false
# by default packages are ordercer ascendant (asc|desc)
# sort_packages: asc
auth:
htpasswd:
file: ./htpasswd
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
# max_users: 1000
# a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npm.taobao.org/ (镜像源配置,可以添加多个)
packages:
'@*/*':
# scoped packages
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'**':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish/publish packages
# (anyone can register by default, remember?)
publish: $authenticated
unpublish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
# You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections.
# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
# log settings
logs:
- { type: stdout, format: pretty, level: http }
#- {type: file, path: verdaccio.log, level: info}
listen: http://IP:4873 (需要监听的端口,IP)
max_body_size: 300mb (最大的文件包限制)
#experiments:
# # support for npm token command
# token: false
配置完成后,打开网站http://IP:4873
:
页面会提示你去添加账号和发布。BUT,这一步之前你可以先去设置镜像源,这里就会涉及到一个工具叫nrm
什么是nrm呢?
nrm是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换。
首先全局安装nrm
:npm install -g nrm
由于上面是我们自己建立的npm 私有仓库,所以我们得添加一个自己的npm 镜像源,添加方式:
nrm add <name> http://IP:4873
。add 接收两个变量 <name>镜像源名称 <url> 镜像源url地址,那么如何查看有哪些镜像源呢
nrm ls
:
npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
* xxx http://IP:4873/
列表内已经添加好了自己的npm镜像源,那么关键的一步是切换到添加的镜像源:nrm use xxx
,更多nrm命令,请自行谷歌查询。到这里,我们就可以回到我们配置verdaccio步骤去添加账号和发布你的第一个库了。
添加账号:npm adduser --registry=http://IP:4873
发布库或组件:npm publish
更多npm命令,请查看https://cloud.tencent.com/developer/section/1490273
这样你就可以玩转私有npm仓库了!
如何启动verdaccio呢?
- 首先安装 pm2 守护进程工具。
- 然后使用命令
pm2 start verdaccio
,but , 在windows系统下这样是启动不了的,因为在windows系统下verdaccio.cmd它不是有效的,您必须直接运行Node.js命令。
所以我们应该修改启动命令:pm2 start C:\Users\Administrator\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio --name verdaccio
。这样就可以正常启动了。 - 如果要查看pm2更多命令,请自行谷歌查询。
最后推一波:
个人博客,欢迎大家前来留言。