npm私有仓库搭建(验证OK)

核心:采用verdaccio,Verdaccio 是一个 Node.js创建的轻量的私有npm proxy registry

安装verdaccio

1、首先全局安装verdaccio:

npm install -g verdaccio

2、启动verdaccio:用cmd命令,在路径C:\Users\用户名\AppData\Roadming\npm下,执行 verdaccio即可启动仓库

3、配置verdaccio(启动后才有config.yaml文件):

配置文件地址:C:\Users\Administrator\AppData\Roaming\verdaccio\config.yaml

修改内容:重点是以下两行

listen: http://IP:4873

url: https://registry.npm.taobao.org/

#

# 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

# 缓存路径,最好找一个空间比较大的盘来放,默认是在C 盘

storage: D:\verdaccio\storage

# path to a directory with plugins to include

plugins: ./plugins

web:

  title: Verdaccio

  # 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}



#需要监听的端口,IP

listen: http://IP:4873

#最大的文件包限制

max_body_size: 300mb

#experiments:

#  # support for npm token command

#  token: false

# This affect the web and api (not developed yet)

#i18n:

#web: en-US

4、关闭启动窗口,重新启动

5、直接打开http://IP:4873地址,这就是你的仓库

6、添加账号:npm adduser --registry=http://IP:4873,按照提示定义用户名、密码和邮箱

7、登录:npm login,按照提示输入用户名、密码和邮箱

8、发布:找到已经开发的工程,直接在路径下直接执行命令:npm publish

如下便是发布成功

image

刷新http://IP:4873地址,能看到自己发布的包

image

正常流程到此就算是结束了~~~~~~不过,下面两个也必不可少哦

安装nrm

nrm是一个npm的资源管理器,允许快速的在npm源之间切换

1、安装:

npm install -g nrm

2、添加自己的npm 镜像源,register是镜像源名称,http://IP:4873是url:

nrm add register http://IP:4873

查看镜像源:

nrm ls

image

3、切换到添加的镜像源:

nrm use register

4、删除镜像

nrm del <registry>

安装守护进程pm2

守护进程pm2,防止异常情况引起的verdaccio服务停止

1、安装:

npm install pm2 -g

2、启动verdaccio

pm2 start C:\Users\shirunxiang.HOLLYSYS\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio --name verdaccio

参考:https://www.jianshu.com/p/1d0e85d14234

使用自己发布的包

2021.7.6更新

内网搭建的仓库,如果内网突然断网的话,还要继续能push包,则需要在yaml文件的最后,增加如下代码,然后重启:

publish

allow_offline: true

没有网络环境下搭建verdaccio(内网搭建)(未测试)

将以下对应的外网目录拷贝到内网环境中

文件:C:\Users\用户名\AppData\Roaming\npm\verdaccio

文件:C:\Users\用户名\AppData\Roaming\npm\verdaccio.cmd

目录:C:\Users\用户名\AppData\Roaming\npm\node_modules\verdaccio

目录:C:\Users\用户名\AppData\Roaming\verdaccio

注意,其中 storage 目录是存放npm依赖包的地方, 我们可以先直接在外网发布好npm包,然后把storage文件夹复制到内网,接着打开内网verdaccio地址,就能发现这些依赖包自动发布到内网了。

我们发布依赖包到npm私服,有两种包,一种是自己开发的包,另一种是外网npm上的开源包,如果想要将开源包发布到自己的私服上使用,请注意一下几点(踩着坑过来的!!!):

1: 要发布的npm依赖包,最好用npm下载,别用cnpm,因为cnpm包含了各种快捷方式,拷贝到其他电脑会出现各种问题

2: 注意查看发布的npm包中package.json中的 script 中是否含有 republish等钩子属性,republish 会在发布之前执行该命令,而往往我们并不具备执行该命令的环境,从而报错,我们可以将它删除

3:依赖包中有可能嵌套了其他依赖包,该依赖包中子目录的 node_modules文件夹查看依赖情况,发布之前也必须一并将它发布。因为 node_modules 是冒泡向上查找依赖的,相同依赖包有不同版本,公共版本被提取到了依赖包的最外层,特殊版本只能存在于当前目录底下 node_modules文件夹

4:如果想发布指定 package.json 下的所以npm包,正常情况下至少有100多个依赖包,我们手动发布是很辛苦的。但是, verdaccio又不支持一键导入,所以我们只能一个个发布。这里我写了一个 node自动读取 node_modules 目录下的文件并且自动发布依赖包到 npm 的publish 的文件,供大家试用!

修改配置

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

推荐阅读更多精彩内容