使用Verdaccio搭建npm私服并推送npm包

使用Verdaccio搭建npm私服并推送npm包前言 作为一个前端开发,做久了业务会发现能复用的方法或者组件非常多,我们通常会将其封装并开发一套自己的模板,这样可以直接套用模板进行开发,但是又会存在一个问题,不同的项目用到的通用方法或者组件是不同的

前言

作为一个前端开发,做久了业务会发现能复用的方法或者组件非常多,我们通常会将其封装并开发一套自己的模板,这样可以直接套用模板进行开发,但是又会存在一个问题,不同的项目用到的通用方法或者组件是不同的,冗余的方法与组件会增大我们打包体积。
我们又想到可以将我们封装好的方法或者组件传到npm仓库中,这样就可以像搭积木一样,下载自己所需的方块就好了,但是出于对代码的保护,我们并不能直接公开的传到npm仓库中,这时候就需要搭建一套npm私服来对我们的轮子进行管理,而使用Verdaccio搭建npm私服是目前主流的方法,本文将介绍如何使用Verdaccio搭建npm私服,并且开发一个简单的npm包进行使用。

先来看一下搭建好的效果: image.png

什么是Verdaccio?
Verdaccio 是意大利语绿色的意思。Verdaccio前身是Sinopia ,Sinopia停止更新后,以此为基础推出了 Verdaccio, Verdaccio是一个轻量级的 npm 缓存中新,按需缓存所有依赖项,并加速本地或私有网络中的安装,是搭建 npm 私服较为流行的方案之一。Verdaccio官网 如何搭建?

1.准备工作

  • 需要准备CentOS系统,阿里云服务器即可练手
  • 使用Xshell进行服务器连接

准备一台阿里云服务器,练手用的话无所谓参数性能,轻量级服务器即可:

1672924637528.png 安装Xshell新建连接,按照步骤输入主机等信息登录即可。 image.png 首先需要使用Xshell连接我们的阿里云服务器,登录成功后看到我们的系统界面就可以进行下一步操作了。

1672924817678.png

2.安装docker

2.1 安装yum-utils

首先我们安装yum-utils,yum-utils是yum的工具包集合,由不同的作者开发,使yum使用起来更加方便,包括接下来使用的yum-config-manager等功能。

yum install -y yum-utils

2.2 搭建docker镜像yum源

这里我们设置docker的阿里云centos源,可以解决docker安装时所需依赖等问题。

# 添加docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

# 更新yum缓存
yum --enablerepo=updates clean metadata

2.3 docker设置国内镜像源

# 创建docker配置文件 
mkdir /etc/docker 

# 编辑docker配置文件 
vi /etc/docker/daemon.json

修改 registry-mirrors 和 dns 配置

{ 
    "registry-mirrors": 
        [ 
            "https://docker.mirrors.ustc.edu.cn", 
            "https://hub-mirror.c.163.com", 
            "https://registry.docker-cn.com" 
        ],
    "dns": ["114.114.114.114","8.8.8.8"] 
 }

dns配置详解:

114.114.114.114是国内通用的免费DNS服务器的IP地址
8.8.8.8Google公司提供的免费DNS服务器的IP地址

registry-mirrors国内加速地址:

1.Docker中国区官方镜像
registry.docker-cn.com

2.网易
hub-mirror.c.163.com

3.ustc 
docker.mirrors.ustc.edu.cn

4.中国科技大学
docker.mirrors.ustc.edu.cn

5.七牛云 
reg-mirror.qiniu.com

2.4 重启docker

# 重启配置 
systemctl daemon-reload 

# 重启docker 
systemctl restart docker

2.5 查看是否成功

docker info

image.png

完成以上操作后我们就可以进行 Verdaccio 容器配置。

3.Verdaccio部署

我们来看一下Verdaccio整体文件目录,分为conf配置目录,storage 包存放目录,plugins 插件目录以及docker-compose的配置文件docker-compose.yaml


└── /verdaccio 项目目录
   ├──/conf 配置目录
   │  └── config.yaml verdaccio的配置文件
   │  └── htpasswd 预设用户密码文件
   │
   ├──/storage 包存放目录
   │
   ├──/plugins 插件目录
   │
   └── docker-compose.yaml docker-compose 配置文件

3.1 创建 docker-compose.yaml 文件

docker-compose是用于定义和运行多容器Docker应用程序的工具。通过docker-compose,可以使用YAML文件来配置应用程序的服务。

# 创建目录 
mkdir /verdaccio 

# 创建yaml文件 
touch /verdaccio/docker-compose.yaml

# 修改yaml文件
vi /verdaccio/docker-compose.yaml

修改docker-compose.yaml文件内容:

version: '3.1' 

services:
  verdaccio:
    image: verdaccio/verdaccio 
    container_name: "verdaccio"
    ports:
      - "4873:4873"
    volumes:
      - "./storage:/verdaccio/storage"
      - "./conf:/verdaccio/conf"
      - "./plugins:/verdaccio/plugins"
networks:
  node-network:
    driver: bridge
  • version docker版本号
  • image verdaccio镜像
  • volumes 将物理机的目录挂载到docker中

3.2 配置Verdaccio

3.2.1 创建配置文件 config.yaml

此文件是 Verdaccio 的重要配置文件, 可以设置包目录、插件目录、上行链路、预设用户密码、上传权限检查等, 同时可以启用插件并扩展功能。Verdaccio详细配置

# 创建目录
mkdir /verdaccio/conf

# 创建文件
touch /verdaccio/conf/config.yaml

# 修改config.yaml文件
vi /verdaccio/conf/config.yaml

修改config.yaml文件内容:

    storage: /verdaccio/storage
    plugins: /verdaccio/plugins
    auth:
      htpasswd:
        file: /verdaccio/conf/htpasswd
    i18n:
      web: zh-CN
    uplinks:
      npmjs:
        url: https://registry.npmjs.org
        timeout: 10s
        cache: false
      yarn:
        url: https://registry.yarnpkg.com
        timeout: 10s
        cache: false
      npmmirror:
        url: https://registry.npmmirror.com
    packages:
      "@*/*":
        access: $all
        publish: $authenticated
        proxy: npmjs npmmirror yarn
      "**":
        access: $all
        publish: $all
        proxy: npmjs npmmirror yarn
    middlewares:
      audit:
        enabled: true
    logs:
      - { type: stdout, format: pretty, level: http }    
    listen: 0.0.0.0:4873

文件配置详解:

# npm包存储地址
storage: /verdaccio/storage

# 插件存储地址
plugins: /verdaccio/plugins

#开启web 服务,能够通过web 访问
web:
  # WebUI is enabled as default, if you want disable it, just uncomment this line
  enable: true
  title: npm-store #网站首页进入的正文标题
  # logo: #这里可以给定一个远程连接的图片,注释掉就采用默认的
  # comment out to disable gravatar support
  gravatar: true
  # by default packages are ordercer ascendant (asc|desc)
  # sort_packages: asc # 包的排序
  # darkMode: true # 黑暗模式
  
# 密码文件
auth:
  htpasswd:
    file: /verdaccio/conf/htpasswd
    #此配置项可以关闭注册功能
    max_users: -1
# 语言配置 
i18n:
    # list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations
  web: zh-CN # 默认是en-US,我们改为默认中文
  
# 上行链路配置
uplinks:
  npmjs:
    url: https://registry.npmjs.org
    timeout: 10s
    cache: false
  yarn:
    url: https://registry.yarnpkg.com
    timeout: 10s
    cache: false
  npmmirror:
    url: https://registry.npmmirror.com
    
 # 包权限配置 
 packages:
    # 三种身份,所有人,匿名用户,认证(登陆)用户
    # "$all", "$anonymous", "$authenticated"
  # 带@的包只能登录后发布
  "@*/*":
    # 访问包的权限
    access: $all
    # 发布包的权限
    publish: $authenticated
    # 代理链
    proxy: npmjs npmmirror yarn
  # 普通包所有人都能发布
  "**":
    access: $all
    publish: $all
    proxy: npmjs npmmirror yarn
    
 # 中间件 
 middlewares:
  # 启用 npm audit
  audit:
    enabled: true
    
 # 日志
logs:
  - { type: stdout, format: pretty, level: http }    
  
# 监听的端口,不配置这个,只能本机能访问
listen: 0.0.0.0:4873
3.2.2 创建用户密码预设文件 htpasswd

当我们希望禁止用户注册而是采取预设用户时,需要修改此文件,放置用户名及密码,如用户名demo、密码:123456,密码需要MD5加密。htpasswd在线加密网址

    # 创建文件
    touch /verdaccio/conf/htpasswd

    # 修改config.yaml文件
    vi /verdaccio/conf/htpasswd

将加密后的字符串放入文件中即可。

4.Verdaccio启动

# 进入verdaccio目录
cd /verdaccio

# 后台构建
docker-compose up --build

执行命令后,启动成功,此时就可以访问我们的仓库地址。 image.png

1672930053515.png

此时使用ctrl+c可以退出运行,如果希望在后台运行,需要执行如下命令:

docker run -d verdaccio/verdaccio

停止运行

# 查看运行中的容器 
docker ps -a 

# 找到pid (CONTAINER ID) 
docker stop 找到的pid

或者是使用docker-compose更方便

# 后台构建
 docker-compose up -d
 
 
# 停止并删除构建
 docker-compose down

5.客户端使用

在文件夹下新建.npmrc 文件,把私服地址 配置到项目的 .npmrc。

5.1 注册用户

npm adduser --registry 仓库地址

5.2 发布包

5.2.1 新建一个快速发布的包

新建一个文件夹testUtils,新建一个index.js,导出一个方法:

export const testMethod=(a)=>{
    return a+10
}

新建一个package.json文件: 包括包的名字、版本、作者、文件导入导出规范等信息。

{
  "name": "test-npm",
  "version": "1.0.0",
  "author": "authorname",
  "type": "module",
  "dependencies": {
    
  }
}

image.png

5.2.2 登录用户并推送包

依次输入用户名密码邮箱即可。

npm login  --registry 仓库地址

登录成功后执行推送命令,成功后回到我们的仓库页面可以看到推送的包的信息。

npm publish --registry http://地址:4873/

1672930697953.png

image.png

5.2.3 安装使用包

可以看到我们可以成功下载包并引入使用。

npm i test-npm

image.png

5.3 问题解决

在注册登录或者推送时出现Permission denied:权限被拒绝,没有访问文件的权限。 sudo chmod -R 777 指定文件或目录

总结

本文详细讲解了如何使用阿里云服务器安装docker,配置Verdaccio,同时使用docker部署Verdaccio,从而搭建起我们的npm私服,并且演示了简单的npm包的构建与推送,通过本文可以快速搭建一套自己公司的npm私服,希望对大家有用。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13334.html

(0)

相关推荐

  • hbase跨集群数据迁移_hbase region

    hbase跨集群数据迁移_hbase region前言: 《读者来信》是HBase老店开设的一个问答专栏,旨在能为更多的小伙伴解决工作中常遇到的HBase相关的问题。老店会尽力帮大家解决这些问题或帮你发出求救贴,老店希望这会是一个互帮互助的小平台。有

    2023-02-13
    105
  • 100行js代码实现网站在线用户数量统计 nodejs + socket.io方案[亲测有效]

    100行js代码实现网站在线用户数量统计 nodejs + socket.io方案[亲测有效]  公司的在线培训平台,需要增加一个新功能:实时统计当前在线的用户数量并在终端界面上显示,需要的时候可以查询当前在线的用户的明细。   有3种技术方案可以选用:   1)改动后台代码,在用户登录和退…

    2023-04-12
    99
  • oracle快速向表插入大量数据[亲测有效]

    oracle快速向表插入大量数据[亲测有效]当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候,oracle需要生成 redo log和undo log;此时最好的解决办法是用insert, 并且将表设置为n

    2023-02-26
    99
  • 利用CGI-BIN提升Python Web应用的可交互性

    利用CGI-BIN提升Python Web应用的可交互性Python已经成为了当今最流行的编程语言之一,不仅可以用于数据分析、机器学习、人工智能等各种领域,还可以运用于Web应用的开发。但是,对于Python Web应用的实现来说,要想实现高度的可交互性是一个非常大的挑战。CGI-BIN可以帮助你解决这个问题,它是一种在Web服务器和CGI程序之间通信的标准协议。在本文中,我们将介绍CGI-BIN的原理以及如何使用CGI-BIN来提升Python Web应用的可交互性。

    2023-12-29
    71
  • 呼唤君之名下载(请以你的名字呼唤我 MKV 下载)

    呼唤君之名下载(请以你的名字呼唤我 MKV 下载)

    2023-09-13
    100
  • 数据采集实战(四)-[通俗易懂]

    数据采集实战(四)-[通俗易懂]1. 概述 前段时间在看一本很多人推荐的线性代数教材《线性代数应该这样学》第三版,这一版每个章节都有大量的习题。 官方网站上虽然按照章节提供了习题的答案,一来因为网站是国外的,访问不流畅,二来答案中还

    2023-04-24
    107
  • mysql索引解析「终于解决」

    mysql索引解析「终于解决」1、基本概念 数据读写性能主要是IO次数,单次从磁盘读取单位是页,即便只读取一行记录,从磁盘中也是会读取一页的()单页读取代价高,一般都会进行预读) (1)扇区是磁盘的最小存储单元 (2)块是文件系统

    2023-02-28
    94
  • Mysql 一主一从「建议收藏」

    Mysql 一主一从「建议收藏」1. 主从原理 1.1 主从介绍 所谓 mysql 主从就是建立两个完全一样的数据库,其中一个为主要使用的数据库,另一个为次要的数据库,一般在企业中,存放比较重要的数据的数据库服务器需要配置主从,这样

    2023-06-01
    88

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注