当前位置: 首页 > news >正文

企业级包管理器之搭建 npm 私有服务器 (6)

在企业级应用开发中,常常需要处理私有包的发布和管理。搭建 npm 私有服务器是一个理想的解决方案,它不仅能保证代码的私密性,还能提供更快的下载速度和更精细的权限设置。

一、搭建 npm 私有服务器的优势

  1. 保证代码私密性:在企业开发中,很多时候我们要发布的包是私有的。通过搭建私有服务器,我们可以更好地控制包的访问权限,确保代码的安全性。
  2. 下载速度更快:由于私有服务器通常在局域网内部,因此下载速度更快,能够提高开发效率。
  3. 权限设置利于维护:可以将发布的包做一些权限上的设置,例如指定哪些用户可以访问、发布和安装私有 npm 包,利于维护和管理。

二、Verdaccio——搭建 npm 私有仓库的利器

  1. Verdaccio 的特点
    • 轻量级:Verdaccio 采用 Node.js 编写,安装和运行起来非常快速。它不依赖于任何外部数据库,而是将数据存储在本地文件系统中。
    • 简单的配置:Verdaccio 的配置非常简单,只需一个 YAML 文件即可。您可以轻松地指定用户权限、上游代理、缓存设置等。
    • 缓存和代理:Verdaccio 可以作为上游 npm 注册表的代理,从而帮助减轻网络延迟和提高包的安装速度。同时,它还会缓存已经下载的包,以便在没有互联网连接的情况下也能正常工作。
    • 访问控制:Verdaccio 支持基于用户和包的访问控制,您可以轻松地管理谁可以访问、发布和安装私有 npm 包。
    • 插件支持:Verdaccio 支持插件,您可以扩展其功能,如添加身份验证提供程序、审计日志等。
  2. 安装和启动 Verdaccio
    • 首先安装 Verdaccio:
    npm i -g verdaccio
    
    • 查看 verdaccio 的基本信息:
    verdaccio -h
    
    • 启动服务器:
    verdaccio
    
  3. Verdaccio 相关配置
    • 配置文件格式:Verdaccio 配置文件采用的是 YAML 格式,这是配置文件的一种常用格式,基本的语法结构由键值对组成,使用缩进来表示层级关系,键值对使用冒号分隔,键和值之间使用一个空格分隔。例如:
    person:name: Johnage: 30address:street: Main St.city: New York
    
    • 一些重要配置项
      • storage:存储包的路径。
      • web:网站相关的配置,如 title 等。
      • uplinks:上游代理。当我们搭建了私服,但通过私服下载某些包时,私服可能没有。这个时候就会从上游代理中去下载这些包,然后缓存到私服里面。例如:
      uplinks:npmjs:url: https://registry.npmjs.org/
      
      • packages:这个配置项用于对权限的控制。例如:
      packages:'@your-scope/*':access: $authenticatedpublish: $authenticatedproxy: npmjs'**':access: $allpublish: $authenticatedproxy: npmjs
      
      @your-scope/ 这个作用域包,只允许认证过的用户访问和发布,对于其他的包,所有用户都能够访问,但是只有认证过的用户才能发布,从而能够对权限做一个很好的控制。
      • auth:设置用户身份的验证方法,默认采用的是 htpasswd 的方式。

三、镜像管理工具 nrm

  1. nrm 的作用:nrm 是一个专门用于管理 npm 镜像的工具,全称是 npm registry manager。
  2. 安装 nrm
    • 首先安装 nrm:
    npm i -g nrm
    
    • 安装时可能会遇到错误,因为 nrm 依赖于一个名为 open 的包,因此在安装 nrm 的时候,同时安装 open 即可:
    npm install -g nrm open@8.4.2
    
  3. nrm 常见指令
    • nrm ls:列出所有可用的镜像列表。
    • nrm use < registry >:切换镜像。
    • nrm add < registry > < url >:添加镜像。
    • nrm del < registry >:删除镜像。
http://www.lryc.cn/news/502452.html

相关文章:

  • Elasticsearch的一些介绍
  • 音乐网站设计与实现
  • UE5 蓝图节点中文化
  • java抽奖系统登录下(四)
  • 解决阿里云轻量级服务器 Ubuntu 24.04.1 LTS 没网也 ping 不通 8.8.8.8 以及 route -n 没有输出任何转发信息
  • 跨域问题及其解决方案
  • 在CentOS中安装和卸载mysql
  • React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等
  • Redis安装和Python练习(Windows11 + Python3.X + Pycharm社区版)
  • Sqoop脚本编写(Mysql---->>hdfs)
  • 帝可得项目redis连接不上
  • JS中this的值详细讲解以及面试指向练习
  • 显示浮动式窗口的方法
  • FireFox火狐浏览器企业策略禁止更新
  • C++类的运算符重载
  • 泷羽Sec学习笔记-zmap搭建炮台
  • 分析M0G突破后急剧下跌内因,x.game阐述不利面延续多久
  • 网络爬虫全解析
  • 《孤岛惊魂4》无法启动提示缺少“msvcp100.dll”快速修复方法!
  • GS-SLAM论文阅读--RGBDS-SLAM
  • 条件编译->enable_if和 if constexpr使用区别
  • 介绍一下CSS中伪类和伪元素的概念
  • 【橘子ES】熔断器Circuit breaker
  • 6.4 CPU性能分析--Intel处理器跟踪技术
  • 期权懂|如何用第三方平台开通期权?
  • JS中const有没有变量提升
  • Axure RP全面介绍:功能、应用与中文替代方案
  • WordPress用户首次登录强制修改密码
  • AI开源南京分享会回顾录
  • 基于事件驱动的websocket简单实现