如何创建私有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更多命令,请自行谷歌查询。

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

推荐阅读更多精彩内容

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