zoukankan      html  css  js  c++  java
  • 使用verdaccio搭建npm私有库 pm2守护进程 nrm管理npm源

    介绍

    团队开发用到npm,但公司要求使用的私有npm库方便管理,查找相关资料后决定使用verdaccio搭建npm私有库。话不多说直接开始吧。
    参考文献:
    verdaccio-npm
    pm2-npm
    nrm – NPM registry manager

    实现思路

    1. 搭建verdaccio私有库
    2. 使用pm2管理进程,避免服务挂掉的情况
    3. 发布安装npm包
    4. 使用nrm管理切换npm registry

    安装步骤

    安装verdaccio

    • verdaccioi是 sinopia 开源框架的一个fork,sinopia已经没有人维护了所以建议直接使用verdaccio。使用npm全局安装即可。
      npm install verdaccio -g
    • 测试运行verdaccio,测试是否安装成功。
      成功示例:
      成功示例
      打开http://localhost:4873出现如图所示界面则表示安装成功:
      成功示例

    注意

    1. 默认启动服务需要占用4873端口,若启动verdaccio服务失败请检查该端口是否被占用,或者手动修改对应的配置文件。一般路径为C:Users用户AppDataRoamingverdaccioconfig.yaml。修改其中的端口号。
    2. config.yaml配置文件详解
    # #号后面是注释
    # 所有包的缓存目录这里建议修改放在其他盘不要放在系统盘
    storage: ./storage
    # 插件目录
    plugins: ./plugins
    
    #开启web 服务,能够通过web 访问
    web:
      # WebUI is enabled as default, if you want disable it, just uncomment this line
      #enable: false
      title: Verdaccio
    #验证信息
    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.npmjs.org/
    
    packages:
      '@*/*':
        # scoped packages
        access: $all
        publish: $authenticated
    
        #代理 表示没有的仓库会去这个npmjs 里面去找 ,
        #npmjs 又指向  https://registry.npmjs.org/ ,就是上面的 uplinks 配置
        proxy: npmjs
    
      '**':
        # 三种身份,所有人,匿名用户,认证(登陆)用户
        # "$all", "$anonymous", "$authenticated"
    
        #是否可访问所需要的权限
        access: $all
    
        #发布package 的权限
        publish: $authenticated
    
        # 如果package 不存在,就向代理的上游服务发起请求
        proxy: npmjs
    
    # To use `npm audit` uncomment the following section
    middlewares:
      audit:
        enabled: true
    # 监听的端口 ,重点, 不配置这个,只能本机能访问
    listen: 0.0.0.0:4873
    # log settings
    logs:
      - {type: stdout, format: pretty, level: http}
      #- {type: file, path: verdaccio.log, level: info}
    着重配置这几点
    • storage:#所有包的缓存目录 建议修改如:D: pmPackesstorage
    • listen: 0.0.0.0:4873 #建议追加该配置,不配置只能本地访问,若只是本地访问可不用 。
    • 访问控制三种身份:所有人("$all"),匿名用户("$anonymous"),认证(登陆)用户("$authenticated") 。一般发布者都设置成 认证/登陆用户("$authenticated")。安装者设置成所有人("$all")。
    • proxy:代理 表示没有的包verdaccio库会去这个npmjs (即配置中https://registry.npmjs.org/)里面去找.

    verdaccio常用问题集锦
    转至目录

    使用pm2管理进程

    在确定verdaccio安装成功的情况下,使用pm2能更好的管理verdaccio服务(需要node.js环境),避免服务被错误关闭,进程被中断的情况。

    pm2简介

    pm2是node进程管理工具,可以用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。关于pm2的内容这里不做过多介绍,大家可以去官网或者其他博客查看了解,后文会附上pm2的常用命令。

    全局安装pm2

    npm install pm2 -g

    使用pm2启动verdaccio

    作者曾经卡在这里很久,也通过国内外找资料,最后解决了。网上说的pm2 start verdaccio 和 pm2 start “which verdaccio” 都不行。最后找到verdaccio安装目录的bin文件夹中的verdaccio启动文件最后启动成功

    • 首先找到verdaccio的安装目录,就是npm 安装全局包的路径。
      我通过配置更改了全局包的路径改为了D:Node ode_global ode_modules(建议修改nodejs全局包下载存放的路径节省c盘空间,并配置对应环境变量参考博客),默认全局包在C:UsersAdministratorAppDataRoaming pm ode_modules
      找到verdaccio文件夹并打开bin文件夹如图:
      启动文件示例
      如图中所示这个verdaccio 的启动文件的路径就是D:Node ode_global ode_modulesverdaccioinverdaccio

    • 然后
      pm2 start D:Node ode_global ode_modulesverdaccioinverdaccio
      同理:如果你的pm2的启动路径和verdaccio的启动文件的路径在一个目录下可直接 pm2 start verdaccio
      启动成功如图:
      在这里插入图片描述
      status 为“online”即为成功,然后打开对应地址http://localhost:4873 或者你配置的端口

    • pm2 show verdaccio 查看该进程详细信息

    • pm2 logs 查看错误日志

    • pm2… …pm2常用命令文末附上

      转至目录

    使用nrm管理或者切换npm仓库源

    nrm – NPM registry manager, nrm是专门用来管理和快速切换私人配置的registry。当使用官方npm源安装各种包比较慢的时候,建议修改npm源地址。公司有属于自己的是有npm仓库建议使用nrm.

    • nrm ls 查看nrm 配置

    • nrm current 查看当前使用的是哪个源

    • nrm add ** 添加npm源,如http://XXX.XXX.XX:4873 就可以很方便的切换npm的私有库和共有库了
      nrm add test http://registry.test.org

    • nrm use ** 切换源

    • nrm del ** 删除nrm配置

      转至目录

    附:pm2常用命令

    $ npm install pm2 -g    # 命令行安装 pm2
    
    $ pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js
    
                            # 也可以把'max' 参数传递给 start
    
                            # 正确的进程数目依赖于Cpu的核心数目
    
    $ pm2 start app.js --name my-api # 命名进程
    
    $ pm2 list              # 显示所有进程状态
    
    $ pm2 monit              # 监视所有进程
    
    $ pm2 logs              # 显示所有进程日志
    
    $ pm2 stop all          # 停止所有进程
    
    $ pm2 restart all        # 重启所有进程
    
    $ pm2 reload all        # 0 秒停机重载进程 (用于 NETWORKED 进程)
    
    $ pm2 stop 0            # 停止指定的进程
    
    $ pm2 restart 0          # 重启指定的进程
    
    $ pm2 startup            # 产生 init 脚本 保持进程活着
    
    $ pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
    
    $ pm2 delete 0          # 杀死指定的进程
    
    $ pm2 delete all        # 杀死全部进程
  • 相关阅读:
    [redis] redis在线系统热迁移的方案与记录
    [golang] go get无法安装官方软件包
    我有关编程语言的一点理解
    [nginx] nginx源码分析--健康检查模块锁分析
    [nginx] nginx的hash与bucket size分析
    [daily][linux] dmesg格式里的时间为什么不准
    [daily] 查看linux程序或操作的kernel内核调用栈
    [go] 像gdb一样使用dlv debug golang程序
    [tls][https][nginx] https的client session cache与session ticket机制分析
    [性能优化] CPU电源管理pstate cstate
  • 原文地址:https://www.cnblogs.com/lgjava/p/14087984.html
Copyright © 2011-2022 走看看