NPM 私有仓库

NPM 私有仓库

地址:https://verdaccio.org/zh-CN/docs/docker

一、服务器安装

1、登录服务器

登录仓库服务器,如果账号不是root 需要关键命令前加上sudo。

2、创建安装主目录

sudo mkdir verdaccio
cd verdaccio

3、下载镜像verdaccio

docker pull verdaccio/verdaccio

4、编写docker-compose文件

#拷贝“使用docker-compose”小节配置。

sudo vi docker-compose.yaml

#将“使用docker-compose”内容拷贝到yaml文件中,并wq!退出并保存。

——可选项:机器重启自动启动容器

version: '3.1'

services:
  verdaccio:
    image: verdaccio/verdaccio
    container_name: "verdaccio"
    restart: always
    networks:
      - node-network
    environment:
      - VERDACCIO_PORT=4873
    ports:
      - "4873:4873"
    volumes:
      - "./storage:/verdaccio/storage"
      - "./config:/verdaccio/conf"
      - "./plugins:/verdaccio/plugins"  
networks:
  node-network:
    driver: bridge

5、运行docker-compose

sudo docker-compose up

默认会提示错误:

cannot open config file /verdaccio/conf/config.yaml: Error: CONFIG: it does not look like a valid config file

原因说明:

docker-compose文件中外挂了3中卷文件,conf、log、storage
该卷目的是将系统配置文件永久保留便于迁移
Verdaccio在docker中使用uid=10001,该账号没有root权限;同时缺少config.yaml的映射。

6、更改授权

cd .. 
sudo chown -R 10001:65533 verdaccio

7、增加配置文件

cd verdaccio/config
sudo vi config.yaml

#拷贝https://github.com/verdaccio/verdaccio/blob/5.x/conf/docker.yaml内容到config.yaml

# path to a directory with all packages
storage: /verdaccio/storage/data
# path to a directory with plugins to include
plugins: /verdaccio/plugins

# https://verdaccio.org/docs/webui
web:
  title: Verdaccio
auth:
  htpasswd:
    file: /verdaccio/storage/htpasswd
# a list of other known repositories we can talk to
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs
  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    # 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: npmjs
server:
  keepAliveTimeout: 60
middlewares:
  audit:
    enabled: true

8、修改授权

sudo vi config.yaml

修改package节的授权配置

    '@*/*': 节
    access由$all 改为 $authenticated
        ——目的,所有Pull指令均需要账号认证。
    publish由 $authenticated修改为admin
        ——目的,所有向服务器发布包需要管理员admin账号。
     '**':节
     同上修改。

9、启动服务

cd ..
docker-compose up

10、辅助命令

查看日志

 docker logs --tail 20 verdaccio

11、创建管理员账号

npm adduser --registry http://192.168.xxx.xxx:4873
username:admin
password:[yourpsw]
email:[yourmail]
cat ~/.npmrc
//192.168.xxx.xxx:4873/:_authToken="XXXXXiXXXXXXXXXXXXX"

重要:记录admin的tocken到记事本中,为后续项目引用、CI&CD使用。

12、创建只能拉取的账号

npm adduser --registry http://192.168.xxx.xxx:4873
username:pulluser
password:[yourpsw]
email:[yourmail]
cat ~/.npmrc
//192.168.xxx.xxx:4873/:_authToken="XXXXXiXXXXXXXXXXXXX"

重要:记录pulluser的tocken到记事本中,为后续项目引用、CI&CD使用。

13、重启docker

docker ps
docker restart [verdaccioid]

二、访问仓库

访问网站:

http://192.168.xxx.xxx:4873/

登录:admin/[yourpsw]

三、项目配置

1、发布NPM包到服务器

​ 1)打开项目,输入npm whoami 验证当前的登录

​ 2) 在项目根目录创建.npmrc

​ 3)配置内容:

always-auth=true
registry=http://192.168.xxx.xxx:4873/
//192.168.xxx.xxx:4873/:_authToken='[admin's token]'

4)修改项目package.json

-- "private": false
-- "name": "[npm name what you want]"
-- "publishConfig": {
    "registry": "http://192.168.xxx.xxx:4873/"
    }
  1. 终端控制台,输入
npm publish --registry http://192.168.xxx.xxx:4873/

2、应用NPM包

1)在项目根目录创建.npmrc

2)配置内容:

always-auth=true
registry=http://192.168.xxx.xxx:4873/
//192.168.xxx.xxx:4873/:_authToken='[pulluser's token]'

​ 3)终端控制台,输入

npm i --registry http://192.168.xxx.xxx:4873/  [npm name what you want] 

3、移除NPM包【谨慎操作】

npm unpublish --force [yourPackage]
### npm私有仓库的配置与使用 #### 一、搭建npm私有仓库的方式 可以采用多种方式来搭建npm私有仓库,以下是几种常见的方法及其特点: 1. **Verdaccio** Verdaccio 是一种轻量级的 npm 私有仓库解决方案,适合中小型团队使用。通过简单的安装和配置即可快速部署到公司内网环境[^1]。其主要优势在于无需复杂的权限管理配置。 2. **Nexus Repository Manager** Nexus 提供更强大的功能支持,适用于大型企业场景下的复杂需求。它不仅能够代理公共 npm 仓库,还允许创建多个分组型或托管型存储库,并提供细粒度的身份验证机制[^5]。 3. **Docker容器化方案** 如果希望简化部署流程,则可以选择基于 Docker 的方式运行 verdaccio 或其他类似的工具。这种方式便于维护版本控制以及跨平台迁移[^3]。 #### 二、具体实施步骤说明 ##### (一)利用 Verdaicio 构建本地服务端实例 - 下载并启动 Verdaccio 应用程序; - 修改默认配置文件 `config.yaml` 来指定监听 IP 和端口号等参数; - 访问 Web UI 页面完成初步初始化工作; ##### (二)客户端连接至自定义源地址 对于开发者机器而言,需执行如下命令以便顺利上传下载包资源: ```bash # 安装 nrm 工具用于便捷切换不同注册表 npm install -g nrm # 添加新的远程源记录 nrm add private-source http://your-verdaccio-server-address:port/ # 查看现有选项列表确认新增成功与否 nrm ls # 正式启用目标私有源作为当前活动项 nrm use private-source ``` ##### (三)发布新模块至内部网络中的私有仓库存储位置 当准备就绪之后,按照常规流程推送代码即刻生效: ```bash npm publish --registry=http://your-private-repo-url/ ``` 另外,在某些特定情况下可能还需要额外调整 `.npmrc` 文件内容以适配特殊的安全策略或者路径映射关系[^4]。 #### 三、注意事项 - 确保所有参与者都能够正常访问所设定的服务节点; - 对敏感数据采取必要的加密保护措施防止泄露风险发生; - 根据实际业务规模评估选用合适的技术栈组合形式; ```python import os from dotenv import load_dotenv load_dotenv() PRIVATE_REPO_URL = os.getenv('PRIVATE_NPM_REGISTRY') def publish_package(package_name, version): command = f"npm publish {package_name}@{version} --registry={PRIVATE_REPO_URL}" result = os.system(command) if result != 0: raise Exception(f"Failed to publish package {package_name}") publish_package("example-package", "1.0.0") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值