发布npm包到GitLab教程

news2024/9/25 9:28:46

之前在研究如何搭建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.coloradmin.cn/o/2084015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鲲鹏服务器之ARM探知

什么叫arm架构 ARM架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计…

CSS系列之详解overflow(四)

一、什么是溢出 CSS 的 overflow 属性用于控制元素内容溢出时的表现方式。当元素的内容超出其指定的尺寸范围时,就会出现溢出现象。比如,一个元素的高度设置是 80px,但内容高度不只是 80px,内容此时就叫做溢出了。 那需要注意的…

【QT学习】1-2 Liunx环境下QT5.12.9软件安装1——VMware17.0.0虚拟机安装

注意:如果电脑已经安装低版本的VMware,千万不要卸载,直接覆盖安装,更新到新的安装版本 1.点击.exe文件,右键以管理员身份运行,点击下一步,下一步 2.选择软件安装位置后,点击下一步。…

Datawhale X 李宏毅苹果书 AI夏令营(深度学习进阶)task3

批量归一化 其实归一化简单一点理解就类似于我们学过的数学中的每个数值减去平均值除以标准差。 神经网络中的批量归一化(Batch Normalization,BN)就是其中一个“把山铲平”的想法。不要小看优化这个问题,有时候就算误差表面是凸…

面试基本内容

1.类加载器 类加载器加载过程: 加载:(将字节码文件加载到运行时数据区的方法区中/元空间) 链接:(验证:检查字节码文件是否合法—>准备:静态类变量赋值为默认值,不会实例变量分配初始化—>解析:将常量池引用,转化…

Java | Leetcode Java题解之第382题链表随机节点

题目: 题解: class Solution {ListNode head;Random random;public Solution(ListNode head) {this.head head;random new Random();}public int getRandom() {int i 1, ans 0;for (ListNode node head; node ! null; node node.next) {if (rando…

14.神经网络的基本骨架 - nn.Module 的使用

神经网络的基本骨架 - nn.Module 的使用 Pytorch官网左侧:Python API(相当于package,提供了一些不同的工具) 关于神经网络的工具主要在torch.nn里 网站地址:torch.nn — PyTorch 1.8.1 documentation Containers C…

【Linux】CodeServer:云IDE部署

Code-server 是一个开源项目,它允许你在任何地方通过浏览器访问 Visual Studio Code(VS Code)编辑器。这意味着你可以在远程服务器或云端运行 VS Code,并通过浏览器进行编码、调试和开发,而不需要在本地安装 VS Code。…

EtherCAT 转 ModbusTCP 网关

设备简介 本产品是 EtherCAT 和 Modbus TCP 网关,使用数据映射方式工作。 本产品在 EtherCAT 侧作为 EtherCAT 从站,接 TwinCAT 、 CodeSYS 、 PLC等;在 ModbusTCP 侧做为 ModbusTCP 主站( Client )或从站…

<数据集>无人机识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:9229张 标注数量(xml文件个数):9229 标注数量(txt文件个数):9229 标注类别数:1 标注类别名称:[UAV] 使用标注工具:labelImg 标注规则:对类别…

我如何解决 java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter

优质博文:IT-BLOG-CN 问题 我如何解决java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter 2024-08-25T02:31:25.46202:00 ERROR 21868 --- [fintonic-oauth] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet…

springAI框架学习总结

springAI 1.springAI基本介绍 springAI是一个AI工程应用框架,其目标是将 Spring 生态系统设计原则(例如可移植性和模块化设计)应用于 AI 领域,并推广使用 POJO 作为 AI 领域应用程序的构建块。 2.特性 灵活的AIP支持chat,text…

Matlab R2022b使用Camera Calibrator工具箱张正友标定法进行相机标定附带标定前后对比代码

打开Camera Calibrator 在这添加你拍摄的图片 根据你每个方块的实际边长填写,我是15mm。 通俗一点,要k3就选3 Coefficients,否则为0;要p1、p2就选Tangential Distortion。然后进行计算。 可以点击右侧误差高的选中图像进行移…

【计算机网络】计算机网络的分层结构

为什么要分层?为什么要制定协议? 计算机网络功能复杂→采用分层结构,将诸多功能合理地划分在不同层次→对等层之间制定协议,以实现功能。

探索Scratch编程:重温《西游记-大战蜘蛛精》

小虎鲸Scratch资源站-免费Scratch作品源码,素材,教程分享平台! 在编程教育的浪潮中,Scratch以其简单易用的特点,成为了孩子们学习编程的热门选择。今天,我们很高兴向大家介绍一款精彩的Scratch教学案例作品——《西游记-大战蜘蛛精》。这不仅…

【JAVA入门】Day27 - 集合体系结构综述

【JAVA入门】Day27 - 集合体系结构综述 文章目录 【JAVA入门】Day27 - 集合体系结构综述一、单列集合体系结构1.1 Collection 集合的基本方法1.2 Collection 集合的遍历方式1.2.1 迭代器遍历1.2.2 增强 for 遍历1.2.3 利用 Lambda 表达式进行遍历 1.3 List 集合的基本方法1.4 L…

pyhton __init__.py

文章目录 包和模块__init__.py概述导入包和使用模块控制导入行为 包和模块 在这样一个工程中,pkg是包(package),module1.py和module2.py是模块(module),在模块中还有定义的方法、变量等,可以统称为功能。 import可以导入包&…

Node-RED解析巴法云/小米的传感器数据

在前面的博文(Node-RED订阅巴法云的数据并展示-CSDN博客)中提到过,Node-RED对JSON格式的数据很友好,直接可以解析。不过巴法云默认的格式是小米所采用的格式,即:#温度#湿度#开关#。采用这种格式的好处就是巴…

【C++二分查找】2271. 毯子覆盖的最多白色砖块数

本文涉及的基础知识点 C二分查找 LeetCode2271. 毯子覆盖的最多白色砖块数 给你一个二维整数数组 tiles &#xff0c;其中 tiles[i] [li, ri] &#xff0c;表示所有在 li < j < ri 之间的每个瓷砖位置 j 都被涂成了白色。 同时给你一个整数 carpetLen &#xff0c;表…

C++ | Leetcode C++题解之第381题O(1)时间插入、删除和获取随机元素-允许重复

题目&#xff1a; 题解&#xff1a; class RandomizedCollection { public:unordered_map<int, unordered_set<int>> idx;vector<int> nums;/** Initialize your data structure here. */RandomizedCollection() {}/** Inserts a value to the collection. …