发布npm包到GitLab教程

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

1. 获取Token

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


2.新建项目

新建一个文件夹npm-demo,目录结构如下:

执行命令npm init创建一个package.json文件,按照提示填写相关内容(一般默认即可,后面还可以改)。

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函数

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

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

plaintext 复制代码
# .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的

相关推荐
2301_7891695412 分钟前
react crash course 2024 (1)理论概念
前端·react.js·前端框架
GDAL18 分钟前
HTML5中Checkbox标签的深入全面解析
前端·html·html5
Java开发追求者37 分钟前
npm镜像源证书过期的问题解决
前端·npm·node.js·npm镜像源证书过期的问题解决
宝子向前冲1 小时前
React中九大常用Hooks总结
前端·javascript·react.js
小白小白从不日白1 小时前
react 基础语法
前端·react.js
岸边的风1 小时前
前端Excel热成像数据展示及插值算法
前端·算法·excel
不良人龍木木2 小时前
sqlalchemy FastAPI 前端实现数据库增删改查
前端·数据库·fastapi
c1tenj23 小时前
Jedis,SpringDataRedis
前端
Code成立3 小时前
HTML5中IndexedDB前端本地数据库
前端·数据库·html5·indexeddb