如何创建私有npm仓库?

原文地址:如何创建私有npm仓库?

目录

  1. 为什么要使用私有npm仓库呢?
  2. 如何搭建呢?
  3. 如何启动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

image.png

如图:你可以直接打开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 源间切换。
首先全局安装nrmnpm 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呢?

  1. 首先安装 pm2 守护进程工具。
  2. 然后使用命令 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。这样就可以正常启动了。
  3. 如果要查看pm2更多命令,请自行谷歌查询。

最后推一波:
个人博客,欢迎大家前来留言。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容

  • 介绍 在上一篇(如何发布代码到npm官方仓库)文章中,我们介绍了如何将自己的代码发布到npm官方仓库,通过那种方式...
    langkee阅读 1,363评论 0 0
  • 大体搭建步骤转自: npm私有仓库搭建 而大部分截图来自亲测操作过程 一、首先需要安装node环境 1、下载,ht...
    前端菜篮子阅读 10,474评论 0 5
  • 大家好,我是小L,说实话,npm私有库不是一个新鲜名词了,但这个概念我是第一次接触的。以下内容为本人半手打半复制,...
    不了LZ阅读 1,289评论 1 2
  • 好处: 1、平时在项目工作中可能会用到很多通用性的代码,比如,框架类、工具类以及公用的业务逻辑代码(支付、播放器)...
    李世铿阅读 2,327评论 1 0
  • 寒湿,是一种疾病。中医认为寒湿包括外感寒湿和内生寒湿两个方面。 外感寒湿:外感寒湿邪气,气血运行受阻,以关节、筋骨...
    2c5398fc5348阅读 203评论 1 1