【npm私有化部署】手把手教你使用Verdaccio搭建私有化npm

2024-09-29
11464 分钟
...

一、Verdaccio是什么?

Verdaccio是一个 Node.js创建的轻量的私有npm代理注册源(proxy registry)

通过Verdaccio搭建私有npm服务器有着以下优势:

  1. 零配置:无需安装数据库,基于nodejs,安装及运行。
  2. 使用方便:将内部高复用的代码进行提取,方便在多个项目中引用。
  3. 安全性:仓库搭建在局域网内部,只针对内部人员使用。
  4. 权限管理:对发布和下载npm包配置权限管理。
  5. 加速包下载:将下载过的依赖包进行缓存,再次下载加快下载速度。

Verdaccio是sinopia开源框架的一个fork,由于sinopia作者两年前就已经停止更新,坑比较多,因此Verdaccio是目前最好的选择

二、安装Verdaccio以及pm2

全局安装Verdaccio:


npm install -g verdaccio

通过命令行启动的话,如果终端停止了,那我们的服务器也就停止了,因此一般我们通过pm2启动守护进程

npm install -g pm2
pm2 start verdaccio

启动成功可以进入http://localhost:4873/页面

Verdaccio安装好后,我们可以更改npm源为本地地址:


npm set registry http://localhost:4873/

或者针对某个依赖安装时选用自己的源地址(推荐):


npm install demo --registry http://localhost:4873

三、nrm管理镜像源地址

此时如果我们想再次切换到淘宝或者其他的镜像地址,来回切换过于麻烦

我们可以通过nrm这个工具来管理我们的源地址,可以查看和切换地址

npm install -g nrm

安装后我们可以通过nrm add [name] [address]这个命令来新增一个源地址:


nrm add localnpm http://localhost:4873/

使用nrm ls可以查看我们使用的所有源地址,带*是正在使用的地址

通过nrm use [name]来切换地址:

四、注册与发包

1. 注册用户:
npm adduser --registry http://localhost:4873/

输入 username、password 以及 Email 即可

2. 登录
npm login --registry http://localhost:4873

3. 上传私有包

npm publish --registry http://localhost:4873

注意:

1、当前私有仓库必须包含 package.json 文件

2、每次发布的时候,都需要使用npm version v1.x.x 更新版本,并且保证仓库是干净的

上传成功后可查看到上传的包:

4. 移除一个包
// 删除特定版本
npm unpublish <package-name>@<version>

// 删除整个包(谨慎使用):
npm unpublish <package-name> --force

请注意,如果你要删除整个包,必须使用 --force 标志。

五、包名规范

在npm(Node Package Manager)中,包名前面带有@符号表示该包是一个范围包或者组织包。

  1. 范围包(Scoped Packages)
    • 当一个npm包以@scope/name的形式出现时,它标识这是一个有命名空间的包。scope是可选的命名空间前缀,用于区分不同组织、项目或个人的包。例如,@mycompany/my-package表明这个包属于mycompany这个组织或团队,并且包的实际名称是my-package。通过这种方式,可以避免全局包名空间中的命名冲突。
  2. 组织包(Organization Packages)
    • 类似地,许多开源组织或公司在npm上拥有自己的组织账户,发布的包也会带有组织名作为前缀,比如 @angular/router@vue/cli 等。这些包都是相应组织管理并发布的官方组件或工具。

因此,@符号在npm中不仅用作版本控制时指定版本范围(如 npminstall react-router@2.8.1),还用来创建和管理具有特定命名空间的包。

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
pnpm2026-03-17
Bun 为什么比 pnpm(以及 npm、Yarn)快
Bun 之所以比 pnpm(以及 npm、Yarn)快,核心原因在于其 底层架构的彻底重构 。pnpm 虽然通过硬链接和内容寻址解决了磁盘空间和部分安装效率问题,但它本质上仍是一个运行在 Node.js 之上的 JavaScript 工具;而 Bun 是从底层用 Zig 语言 编写的原生二进制程序,并深度集成了 JavaScriptCore 引擎。 以下是 Bun 比 pnpm 快的具体技术原因: 1\. 编程语言与执行环境的差异(最根...
学习
pnpm2025-09-01
📦 npm、yarn、pnpm、bun 是什么
🎯 什么是包管理器? 在 JavaScript 和 Node.js 生态中,一个项目往往依赖很多第三方库,比如 Vue、React、Lodash 等。\ \ 包管理器(Package Manager)\ \ 的作用,就是: 安装/卸载这些依赖库; 管理依赖的版本; 构建依赖树; 提供运行脚本(如 npm run dev)等功能。 最早是 npm,后来有了性能更好的 yarn,又有了极致节省空间的 pnpm,最近还杀出了一个全能选手 —...
学习
pnpm2024-09-11
NPM私库搭建-verdaccio(Linux)
linux服务器安装node a)、官网下载所需的node版本 b)、解压安装包 若下载的是xxx.tar.xz文件,解压命令为 c)、修改环境变量 修改:/etc/profile文件 d)、环境变量需重启生效 e)、查看当前node版本 防止报grywarn权限的错 是因为原来的私库崩了 这里直接指明仓库地址为淘宝镜像 文件位置: 如果找不到该文件,需要先运行verdaccio,直接执行verdaccio命令即可。 继续修改配置文件:...
学习
pnpm2024-09-02
【npm进阶】探索npx:一次性执行包的新方式
在现代前端开发中,开发者们需要管理和使用各种各样的npm包。而在此过程中, 作为npm生态系统中的一部分,提供了一种方便的方式来执行本地或远程的npm包。本篇文章将详细介绍 的用途和优势,展示如何使用 来执行本地和远程包,并提供一些实际的npx示例。 引言 在过去,开发者通常会通过全局安装某些工具来使用它们。然而,全局安装不仅会污染全局环境,还可能导致不同项目之间的版本冲突。 是npm 5.2.0引入的一种新工具,旨在解决这些问题。通过...
学习
pnpm2024-07-10
外网向内网导包的坎坷之旅
最近工作遇到个问题,一开始项目是在外网运行的,后来需要导入内网运行,我一开始是把node modules整个目录拷贝过去了,结果运行不起来,可能因为项目是pnpm的,直接从mac拷贝到windows似乎是运行不起来。然后尝试自己下载,缺了好多包,也启动不了运行不起来,最后只好开始了我的导包之旅。 这是一个悲伤的故事,前前后后和对应的人员来回导包4、5次,历时几周才搞完,因为项目不着急,所以就没有急着去搞,真是尴尬。下面就是我的导包之旅:...
学习
pnpm2024-06-04
从零到一使用 turborepo + pnpm 搭建企业级 Monorepo 项目
单纯使用 pnpm 就能实现 Monorepo 项目我们都知道,因为它原生支持 workspace,但是它也依然存在一些缺点,例如: 1. 任务运行策略:虽然 pnpm 支持工作空间间的依赖管理和一些任务的并行执行,但是它并不那么灵活或高效地处理跨包的构建、测试和发布任务比如增量构建和任务缓存,可以显著提高大型 Monorepo 的开发和持续集成的效率。 2. 自定义构建和发布流程:pnpm 在自定义构建流程、测试流程和发布流程方面的能...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录