首页 > 其他分享 >搭建npm私有仓库——verdaccio

搭建npm私有仓库——verdaccio

时间:2024-12-25 15:21:44浏览次数:6  
标签:npm authenticated 私有 publish verdaccio packages npmjs

前言

 

Verdaccio 是一个简单的、零配置要求的本地私有 npm 注册表。无需整个数据库即可开始!Verdaccio 开箱即用,带有自己的小型数据库,并且能够代理其他注册表(例如 npmjs.org),并在此过程中缓存下载的模块。对于那些希望扩展其存储功能的人,Verdaccio 支持各种社区制作的插件,以连接到服务,例如 Amazon 的 s3、Google Cloud Storage或创建您自己的插件

Verdaccio is a lightweight private npm proxy registry built in Node.js

verdaccio是基于node.js的,所以在我们的服务器上需要安装node

Linux 部署

1、安装:

npm install -g verdaccio    # using npm
yarn global add verdaccio    # or using yarn

2、运行:

$> verdaccio
warn --- config file  - /home/.config/verdaccio/config.yaml
warn --- http address - http://localhost:4873/ - verdaccio/3.0.0

Windows 部署

1、安装 nodejs

我们可以安装最新版本,==注意:Verdaccio 5 需要 Node.js v12==

nodejs 下载地址

2、安装 verdaccio

mkdir c:verdaccio         # 创建目录
cd c:verdaccio            # 进入目录
npm install verdaccio        # 安装 verdaccio

3、创建 config.yaml

在当前目录创建config.yaml文件

4、Windows 服务设置

自行选择使用nssm或者winsw,原理都一样。本文使用nssm

  • 下载nssm
  • 添加包含nssm.exe的路径到PATH
  • 打开管理命令
  • 运行nssm install verdaccio,至少必须填写应用程序tab Path,启动目录和参数字段。 假设在系统路径中以及c:verdaccio位置用node安装,以下的值将起作用:
    • Path: node
    • Startup directory: c:verdaccio
    • Arguments: c:verdaccionode_modulesverdacciobuildlibcli.js -c c:verdaccioconfig.yaml
  • 启动服务sc启动verdaccio

配置

我们需要对 verdaccio 进行一些基本设置,打开配置文件:config.yaml

查看verdaccio详细配置

设置网站名

web:  
title: 'Sixpence NPM'

设置用户验证的文件

auth:
  htpasswd:  
  file: ./htpasswd  
  max_users: 1000 #默认为1000,改为-1,禁止注册  

代理配置

uplinks里设置源,然后在packages里设置proxy

# a list of other known repositories we can talk to
uplinks:
  taobao:
    url: https://registry.npm.taobao.org/
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: taobao 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: taobao npmjs

配置权限管理

packages:  
   ‘@/’:  
  #表示哪一类用户可以对匹配的项目进行安装 【$all 表示所有人都可以执行对应的操作,$authenticated 表示只有通过验证的人可以执行对应操作,$anonymous 表示只有匿名者可以进行对应操作(通常无用)】  
  access: $all  
  #表示哪一类用户可以对匹配的项目进行发布  
  publish: $authenticated  
‘*’:  
  #表示哪一类用户可以对匹配的项目进行安装  
  access: $all  
  #表示哪一类用户可以对匹配的项目进行发布  
  publish: $authenticated  
  #如果一个npm包不存在,它会去询问设置的代理。  
  proxy: npmjs  

日志输出设置

logs:  
   -{type: stdout, format: pretty, level: http}  
  #-{type: file, path: verdaccio.log, level: info} 

修改监听的端口

listen: 0.0.0.0:4873  

示例

完整配置如下:

#
# 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: ./storage
# path to a directory with plugins to include
plugins: ./plugins

web:
  title: Sixpence Verdaccio
  # comment out to disable gravatar support
  # gravatar: false
  # by default packages are ordercer ascendant (asc|desc)
  # sort_packages: asc
  # convert your UI to the dark side
  # darkMode: true

# translate your registry, api i18n not available yet
# i18n:
# list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations
#   web: en-US

auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    max_users: -1
    # You can set this to -1 to disable registration.
    # max_users: 1000

# a list of other known repositories we can talk to
uplinks:
  taobao:
    url: https://registry.npm.taobao.org/
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: taobao 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: taobao 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}
#experiments:
#  # support for npm token command
#  token: false
#  # support for the new v1 search endpoint, functional by incomplete read more on ticket 1732
#  search: false

# This affect the web and api (not developed yet)
#i18n:
#web: en-US

listen: 0.0.0.0

遇到的问题

问题 1

运行npm install出现 thon Python is not set from command line or npm configuration 解决方案

解决方案

npm install -g -p windows-build-tools

标签:npm,authenticated,私有,publish,verdaccio,packages,npmjs
From: https://www.cnblogs.com/leeke98/p/18630461

相关文章

  • 私有化部署视频平台EasyCVR打造安防监控系统时,如何确保监控数据的安全?
    在数字化时代,监控数据的安全和隐私保护已成为全球关注的焦点。随着技术的进步,监控系统不仅需要提供清晰的视频监控,还需要确保数据的安全性。以下是一些关键措施,它们可以帮助我们在保护监控数据的同时,遵守法律法规,维护个人隐私和企业安全。1、物理访问控制通过数据库锁定、视频......
  • npm ERR! code EINTEGRITY 解决方案
    npmERR!codeEINTEGRITY解决方案|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-----......
  • npm 创建一个 Vite 项目
    步骤1:安装Node.js和npm确保你已经安装了Node.js和npm。你可以通过以下命令检查安装情况:node-vnpm-v如果没有安装,下载并安装最新版本的Node.js,它会自动安装npm。步骤2:创建项目打开终端或命令行窗口,选择一个目录来创建你的项目文件夹。使用以下命令来初始化Vite......
  • 如何在服务器上克隆、pull、push GitHub私有项目
    诸神缄默不语-个人CSDN博文目录情况是这样的,我直接用gitclone命令后,会提示让我输入GitHub账号密码,我输入后它还是显示克隆失败,并显示:Cloninginto'folder_name'...Usernamefor'https://github.com':user_namePasswordfor'https://user_name@github.com':remote......
  • nvm npm yarn 相关配置
    一、NVM1、NVM下载安装包下载地址:https://github.com/coreybutler/nvm-windows/releases2、卸载旧版Node.js如果电脑上之前已经单独安装了Node.js,先卸载删除,环境变量也删除。3、安装解压后双击exe文件安装 安装完成后,自动添加了如下环境变量 命令行窗口输入nvm,如下......
  • 私有化部署视频平台EasyCVR安防知识:如何根据监控场景选择合适的像素密度?
    在现代安防监控系统中,选择合适的像素密度对于确保监控效果至关重要。不同的监控场景和目的对图像清晰度有着不同的要求,因此,了解如何根据具体需求选择合适的像素密度,是实现高效监控的关键。以下是一些关键点,可以帮助我们根据不同监控场景的需求,选择合适的像素密度。1、像素密度标......
  • 自己搭建专属AI:Llama大模型私有化部署
    前言AI新时代,提高了生产力且能帮助用户快速解答问题,现在用的比较多的是Openai、Claude,为了保证个人隐私数据,所以尝试本地(MacM3)搭建Llama模型进行沟通。Gpt4all安装比较简单,根据 https://github.com/nomic-ai/gpt4all 下载客户端软件即可,打开是这样的:然后选择并下载模型文......
  • 修改python jsonpickle源码, 实现不序列化对象私有成员(3)
    发现之前修改源码后,虽然过滤掉对象的私有成员,但是反序列化的时候,发现生成的对象只有只有公有成员,不包括私有成员.这不是我想要的,因为没有私有成员,对象就不完整了,并且有时候还需要一些私有成员的默认值.所以,还需要再优化一下.修改unpickler.py文件的def_restor......
  • 修改python jsonpickle源码, 实现不序列化对象私有成员(2)
    在前一篇文章中,通过修改源码来实现对象的私有成员不被序列化的功能.但是不够灵活,于是我又修改了一版,能够自定义过滤函数.实现起来不是很难,要点如下:#pickler.py的_flatten_obj_instance函数self._current_obj=obj#记录正在处理的对象returnself._flatten_dict......
  • 掌握pnpm Workspace秘诀:轻松管理多个Vue项目,告别混乱!
    个人使用背景:公司多个后台系统想共用同一套ui框架和组件共用,方便使用组件库二次封装的内容,已经一些共用的api,所以使用workspace官方文档:pnpm内置了对单一存储库(也称为多包存储库、多项目存储库或单体存储库)的支持。你可以创建一个工作空间以将多个项目合并到一个仓库中。......