基于npm+verdaccio+nrm打造C++私有依赖仓库

基于npm+verdaccio+nrm打造C++私有依赖仓库

1、准备工作

1.1 准备node环境

参考windows下nodejs使用

准备nrm环境

npm install --location=global nrm

准备verdaccio环境

npm install --location=global verdaccio

2、配置工作

verdaccio用来建立仓库源

2.1 verdaccio配置

a. 命令行启动verdaccio

verdaccio

b. 定位配置文件
在这里插入图片描述
打开http address,可以查看是否启动成功。

c. 根据需要更改配置文件(此处以建立本地私有C++依赖包仓库为例)

// An highlighted block
# 更改verdaccio管理包存储目录
storage: F:/programs/DEV 
...
# https://verdaccio.org/docs/configuration#uplinks
# a list of other known repositories we can talk to
# 在当前引用仓库不能找到依赖包时 会根据如下设置去搜索依赖包
# 可以屏蔽关掉 
uplinks:
  npmjs:
    # url: https://registry.npmjs.org/
    # 淘宝镜像
    url: https://registry.npmmirror.com/
...
# Learn how to protect your packages
# https://verdaccio.org/docs/protect-your-dependencies/
# https://verdaccio.org/docs/configuration#packages
# 此处设置建立自定义仓库
packages:
  # 建立一个本地仓库
  '@local-office-pack/*':
    # local office pc C++ dependencies 
    # $all:任意用户
    # $anonymous:仅匿名用户
    # $authenticated:仅授权用户
    access: $authenticated
    publish: $authenticated

  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    #代理 表示没有的仓库会去这个npmjs 里面去找,
    #npmjs 又指向  https://registry.npmjs.org/,就是上面的 uplinks 配置
    proxy: npmjs
  ...
...
# https://verdaccio.org/docs/configuration#max-body-size
# 此处设置verdaccio管理的单个包的大小限制
# 当verdaccio发布的包的大小超出此数值时,会抛错:"request entity too large"
# 考虑C++库 或者 C++库代码 量级比较大 此处设置64mb
max_body_size: 64mb
...
# https://verdaccio.org/docs/configuration#listen-port
# listen:
# - localhost:4873            # default value
# - http://localhost:4873     # same thing
# 打开配置0.0.0.0:4873 允许外部ip都可以访问此服务
# - 0.0.0.0:4873              # listen on all addresses (INADDR_ANY)
# - https://example.org:4873  # if you want to use https
# - "[::1]:4873"                # ipv6
# - unix:/tmp/verdaccio.sock    # unix socket
...

d. ctrl&c停止verdaccio运行,再重新启动

verdaccio -c “C:\Users\xxx\AppData\Roaming\verdaccio\config.yaml”
更改配置 重启verdaccio应用 需要调用此命令 否则会沿用老的配置

e. 创建verdaccio授权用户

npm adduser --registry=http://localhost:4873/
根据提示顺序往下操作
可以指定命名空间 具体操作见附录.npm adduser

f. verdaccio用户管理实践:

1个管理员用户 + 多个空间用户
管理用户支持对verdaccio全域的操作
空间用户仅仅支持对特定命名空间域的操作
针对特定命名空间的实践:
“npm init"初始化包的时候需要指定命名空间(“npm init --scope=@my-name”)或者“init"调用过程中,手动在包名字加上”@my-name/包名”
然后"npm login"登录的时候,选择针对该空间的空间用户
否则只有支持全域的账号可以操作。

2.2 nrm配置

nrm用来管理管理 npm registry
a. 查看存在npm的registry(带*号的表示目前正在使用的源)

nrm ls

在这里插入图片描述
b. 添加npm源

nrm add npm源名字 http://localhost:4873/

c. 切换npm源

nrm use npm源名字

3、verdaccio依赖包管理

a. 新建测试项目Test1
b. 在Test1目录下初始化为npm包

npm init
按照提示一步步操作

c. 如果verdaccio不是以守护进程方式启动,先ctrl&c关闭verdaccio,使用pm2启动守护进程,这一步可以根据用户自己选择操作。

# 若没有安装pm2 先安装pm2
npm install --location=global pm2@latest
# 通过pm2启动verdaccio
pm2 start “@verdaccio安装目录\bin\verdaccio”
在这里插入图片描述
此处需要注意:
1.windows系统下,只有当pm2和verdaccio位于同一目录时,才可以通过命令"pm2 start verdaccio"启动
2.windows系统下,pm2 start @程序路径,@程序路径必须是用双引号包裹,否则pm2启动的时候,路径会自动变为 “cmd当前所在路径+@程序路径”,不能正常使用。
在这里插入图片描述
# 通过pm2查看verdaccio的运行状态
pm2 describe verdaccio
在这里插入图片描述
pm2常用命令见附录.pm2常用命令
pm2日志目录位于:C:\Users\xxx.pm2\logs\

d. 登录verdaccio账户

npm login --registry=http://localhost:4873/
按照提示一步步往下操作
在这里插入图片描述
npm whoami:查看当前登录的用户

e. 发布包

npm publish --registry=http://localhost:4873/
根据提示一步步往下操作
如果是已经发布的包,修改了内容,修改package.json文件中的"version"字段后,使用相同命令即可发布

f. 查看发布包

浏览器打开http://localhost:4873/,即可查看发布完成的依赖包
在这里插入图片描述

g. 删除发布完成的包

npm unpublish <包的名字> --registry=http://localhost:4873/

h. 依赖包安装

# 切换依赖包的源
nrm use @私有仓库的源
# 安装依赖包
npm install @依赖包
或者 先写好 package.json文件 自动拉取包
具体参考windows下nodejs使用

附录

附录.pm2常用命令

# Fork mode
pm2 start app.js --name my-api # Name process

# Cluster mode
pm2 start app.js -i 0        # Will start maximum processes with LB depending on available CPUs
pm2 start app.js -i max      # Same as above, but deprecated.
pm2 scale app +3             # Scales `app` up by 3 workers
pm2 scale app 2              # Scales `app` up or down to 2 workers total

# Listing

pm2 list               # Display all processes status
pm2 jlist              # Print process list in raw JSON
pm2 prettylist         # Print process list in beautified JSON

pm2 describe 0         # Display all information about a specific process

pm2 monit              # Monitor all processes

pm2 show [process] # Showing the process metadata

# Logs

pm2 log [process] # Display the process log
pm2 logs [--raw]       # Display all processes logs in streaming
pm2 flush              # Empty all log files
pm2 reloadLogs         # Reload all logs

# Actions

pm2 stop all           # Stop all processes
pm2 restart all        # Restart all processes

pm2 reload all         # Will 0s downtime reload (for NETWORKED apps)

pm2 stop 0             # Stop specific process id
pm2 restart 0          # Restart specific process id

pm2 delete 0           # Will remove process from pm2 list
pm2 delete all         # Will remove all processes from pm2 list

# Misc

pm2 reset <process>    # Reset meta data (restarted time...)
pm2 updatePM2          # Update in memory pm2
pm2 ping               # Ensure pm2 daemon has been launched
pm2 sendSignal SIGUSR2 my-app # Send system signal to script
pm2 start app.js --no-daemon
pm2 start app.js --no-vizion
pm2 start app.js --no-autorestart

附录.verdaccio Package Access策略管理

Package Access

附录.verdaccio Authentication策略管理

Authentication

附录.npm adduser

npm adduser

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值