npm 私有包收费? 不妨试试GitLab Package Registry

最近做了一个基础功能的项目,需要在别的一系列项目中引入。

本来想着发在npm上,后来折腾了一番下来发现,不花钱的话,没法发布私有的包。

后来发现了github packages,这是个好东西。

不过我们公司的代码都放在gitlab里面,那gitlab有没有类似github packages的功能呢,当然有,这就是gitlab package registry。

我们可以发布一个npm包到我们的gitlab实例上,在别的项目使用的时候,和普通的包没有区别,我们只需要npm install 包名就可以下载包,然后在正常的引入就可以了。同时,我们在npm上是搜索不到这个包的,没有权限的人也无法安装这个包。

是不是很棒!

接下来我们就一步一步实现他。

官方文档: docs.gitlab.com/ee/user/pac...

创建项目

首先我们先把我们的本地项目关联到gitlab的仓库中。

这时候我们在本地的项目中操作。

如果没有.npmrc文件,我们需要新建一个。

配置文件

我们先看package.json中的配置

js 复制代码
{
"name": "@kg/tg",
"publishConfig": {
    "@kg:registry": "http://localhost: 3000/api/v4/projects/227/packages/npm/"
  }
}

首先是我们的项目名这里,我们需要改为@kg/tg的格式:

其中,tg是我们可以自己起的包的名字,可以是任意的名字。

那么这个kg是什么?

kg是从我们gitlab项目的地址栏里取出来的,比如 https://localhost: 3000/kg/tg kg一般就代表了组group的名字。

我们还需要加一个publishConfig的配置:

其中kg和上面一样,是group的名字,后面的:registry不用变

后面需要自行替换的部分是http://localhost: 3000,这是我们gitlab的地址,我这里用的是localhost,大家自行替换。

后面的/api/v4/projects/和/packages/npm/是固定的。

中间的227数字是我们的project id,一般在gitlab项目的首页,项目名称下面。

以上就是package.json的配置,总结一下:

  • 项目名称需要加上@和group的名字
  • 加上publishConfig字段,里面包含gitlab地址以及project id

接下来我们还要改一下.npmrc文件的配置

js 复制代码
@kg:registry = https://localhost: 3000/api/v4/projects/227/packages/npm/

//https://localhost: 3000/api/v4/projects/227/packages/npm/:_authToken="HfQc433hioycJzerrfdeft546624w6TCw4438G8u"

这里主要加两行配置:

第一行配置和上面package.json的配置一样,主要标注了gitlab地址,group和project id

第二行的配置要注意一下,这里除了要加上gitlab地址,project id,还有一个重要的东西,就是authToken后面的部分,Access Tokens。

access token需要在gitlab中生成:

access token在这个页面获取,注意的是,点了create project aeecss token按钮之后,token会显示在上面,在token name的上面,而且这只会出现这一次,再次进入这个页面的时候,就看不见token了,所以立刻马上保存下来。

到这里,配置项的工作基本就完成了。

接下来我们只需要执行npm publish就可以把我们的包发布了。

install

说完了包的发布,那么接下来就是如何在项目里面引入这个包了。

首先,要引入的项目必须和包在同一个group下,在我这里就是kg组。

然后想要成功引入包,还必须在项目里也加一下配置。

项目的.npmrc文件中:

js 复制代码
@kg:registry = https://localhost: 3000/api/v4/projects/227/packages/npm/

//https://localhost: 3000/api/v4/projects/227/packages/npm/:_authToken="HfQc433hioycJzerrfdeft546624w6TCw4438G8u"

和上面的.npmrc的配置一样。

这时候我们执行npm install @kg/tg就可以下载下来我们刚刚发布的包了。

在npm上是找不到这个包的,这个是挂载在我们gitlab实例上的包,是属于我们的私有包。

相关推荐
BIBI20495 小时前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践
echome88812 小时前
Git 日常救急:撤销提交、找回误删文件和解决冲突
git·版本控制
江屿风15 小时前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
赵民勇17 小时前
Git命令详解
git
不老刘1 天前
Antigravity 的 New Worktree 模式:给 AI 代理一个安全的“平行工位”
人工智能·git·ai编程·antigravity
光谱SpectrAI1 天前
Windows 也中招:Git Bash 和 Node 仍信任泄露的 eMudhra 证书
git
YIN_尹2 天前
【git原理与使用】git初识与安装
大数据·git·elasticsearch
Leo_Mr2 天前
Vue3 项目配置 Git 提交规范(企业通用方案:husky + commitlint + cz-git + lint-staged)
git
jyOverQ2 天前
Git rebase 和 merge 有什么区别?什么时候该用哪个?
git
晗夜未央2 天前
跨仓库 Skill 换台电脑就失效?用 Git remote 校验项目
人工智能·git·python