当前位置: 首页 > article >正文

发布npm包到GitLab教程

之前在研究如何搭建UI组件库(内部使用),其中重要的一步就是发布npm包到GitLab。中间踩了很多坑,在这里记录一下整个流程方便大家快速上手。不足之处欢迎指出🙏

1. 获取Token

在gitlab中打开access tokens申请页面,新增一个至少拥有read_registry,write_registry权限的Token,建议全部勾选,申请后保存下来。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.新建项目

新建一个文件夹npm-demo,目录结构如下:
在这里插入图片描述
执行命令npm init创建一个package.json文件,按照提示填写相关内容(一般默认即可,后面还可以改)。

// package.json
{
  "name": "@scope/npm-demo", // scope 换成自己的项目组
  "version": "1.0.1",   // 版本号,每次发布要修改,不能重复
  "description": "publish the npm package to gitlab",
  "main": "index.js",   // 入口文件
  "type": "module",  // 使用 ES 模块规范(index.js中用到了export)
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "npm",
    "gitlab"
  ],
  "author": "joshuali",
  "license": "ISC"
}

新建一个js文件,写一个sum函数

// index.js
export function sum(a, b) {
  return a + b;
}

新建一个npm配置文件.npmrc,内容如下

# .npmrc
@scope:registry=https://your_domain_name/api/v4/projects/your_project_id/packages/npm/
//your_domain_name/api/v4/projects/your_project_id/packages/npm/:_authToken="${NPM_TOKEN}"

@scope替换为要发布包的项目组名。
your_domain_name替换为你们公司gitlab的域名。注意前面是https还是http
your_project_id替换为项目 ID,可在项目概述页面上找到。
"${NPM_TOKEN}"与您稍后在流程中创建的令牌相关联。

3.推送包

  • 在git bash窗口:
    NPM_TOKEN=your_token npm publish
  • 在powershell窗口:
    $env:NPM_TOKEN=“your_token”
    npm publish

在这里插入图片描述
打开gitlab可以看到刚刚推送成功的包。
在这里插入图片描述

4.下载包

当前目录没有.npmrc文件:

npm config set – //your_domain_name/:_authToken=your_token
npm config set – //your_domain_name/api/v4/projects/your_project_id/packages/npm/:_authToken=your_token
npm install @scope/包名称

当前目录有.npmrc文件:

  • 在git bash窗口:
    NPM_TOKEN=your_token npm install @scope/包名称
  • 在powershell窗口:
    $env:NPM_TOKEN=“your_token”
    npm install @scope/包名称

5.使用

在这里插入图片描述

参考资料:包注册表中的 npm 包 |GitLab的


http://www.kler.cn/a/286319.html

相关文章:

  • .NET MAUI进行UDP通信(二)
  • mysql_init和mysql_real_connect的形象化认识
  • C++中常用的排序方法之——冒泡排序
  • 【MQ】RabbitMq的可靠性保证
  • Hive安装教程
  • Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)
  • 人工智能和机器学习5 (复旦大学计算机科学与技术实践工作站)语言模型相关的技术和应用、通过OpenAI库,调用千问大模型,并进行反复询问等功能加强
  • 【网络安全】服务基础第一阶段——第四节:Windows系统管理基础---- NTFS安全权限与SMB文件共享服务器
  • Android游戏开发常见知识合集(Unity3D)
  • 距离向视数(Range Looks)方位向视数(Azimuth Looks)
  • MLM之Qwen:Qwen2-VL的简介、安装和使用方法、案例应用之详细攻略
  • 比较一下React与Vue
  • 《机器学习》—— K-means 聚类算法
  • 【微处理器系统原理与应用设计】微处理器的基本架构之组成原理和系统结构
  • 解决Qt报“undefined reference to vtable for“错误
  • 科技改变搜索习惯:Anytxt Searcher,重新定义你的信息获取方式!
  • 【王树森】Transformer模型(2/2): 从Attention层到Transformer网络(个人向笔记)
  • Java智慧社区全能平台集成跑腿家政及本地生活服务商城系统小程序源码
  • MySQL事务处理详解:实现数据一致性与隔离性的艺术
  • 【分层强化学习】Option Critic 的 CartPole-v1 的简单实例
  • MATLAB 地面点构建三角网(83)
  • 事务代码中加synchronized锁引发的bug
  • 5.图论.题目2
  • MySQL索引分类
  • 23. 如何使用Collections.synchronizedList()方法来创建线程安全的集合?有哪些注意事项?
  • 浅析JavaScript 堆内存及其通过 Chrome DevTools 捕获堆快照的方法