手把手教你搭建私有化npm

简介: 手把手教你搭建私有化npm

一、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使用的源为本地私服
npm set registry http://localhost:4873/

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

# 例如安装demo依赖
npm install demo --registry http://localhost:4873

三、nrm管理镜像源地址

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

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

npm install -g nrm

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

# 例如增加名为localnpm的源地址http://localhost:4873/
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。通过这种方式,可以避免全局包名空间中的命名冲突。
  1. 组织包(Organization Packages)
  • 类似地,许多开源组织或公司在npm上拥有自己的组织账户,发布的包也会带有组织名作为前缀,比如 @angular/router@vue/cli 等。这些包都是相应组织管理并发布的官方组件或工具。

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

目录
相关文章
|
缓存 资源调度 运维
从零到一搭建私有NPM服务器
从零到一搭建私有NPM服务器
1652 0
从零到一搭建私有NPM服务器
|
存储 缓存 前端开发
npm私服搭建—verdaccio方案及其最佳实践
如今前端圈已十分繁荣,一个跟得上技术时代脚步的互联网公司必定是前后端分离的(至少在狭义上是分离的),这就导致了前端承受的分工压力会越来越大,很多公司的前端项目变得十分庞杂,因此技术负责人可能会考虑根据业务线进行拆分为几个工程系统,这样又引申出一个问题:这几个系统之间如何共用一套公司内部的组件库呢?
2344 0
|
3月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
JavaScript 前端开发 开发者
从零到一:教你如何发布自己的npm插件包
从零到一:教你如何发布自己的npm插件包
|
4月前
[已解决]npm淘宝镜像最新官方指引(2023.08.31)
[已解决]npm淘宝镜像最新官方指引(2023.08.31)
2929 0
|
6月前
|
JSON JavaScript 数据格式
使用pnpm搭建monorepo开发环境
使用pnpm搭建monorepo开发环境
307 0
|
6月前
|
JavaScript 安全 持续交付
Nodejs 第八章(npm搭建私服)
Nodejs 第八章(npm搭建私服)
120 0
|
6月前
NPM 制作命令行工具 - 入门案例
NPM 制作命令行工具 - 入门案例
69 0
|
域名解析 前端开发 Cloud Native
【阿里云开发】一键部署静态博客——Hexo
【阿里云开发】一键部署静态博客——Hexo
425 0
【阿里云开发】一键部署静态博客——Hexo
|
运维 JavaScript 前端开发
从零搭建 npm 私服教程
从零搭建 npm 私服教程
572 0