Github Package npm 应用发布实践

news2024/11/24 2:45:04

Github Package npm 应用发布实践


文章目录

  • Github Package npm 应用发布实践
    • 1. 简介
    • 2. 创建新库
    • 3. 编写 index.js
    • 4. npm init 初始化
    • 5. npm install
    • 6. 创建 release-package.yml
    • 7. 发布
    • 8. 查看已发布的包
    • 9. 管理 npm 包

1. 简介

GitHub Packages 是一个用于托管和管理包的平台,包括容器和其他依赖项。 GitHub Packages 将源代码和包组合在一起,以提供集成的权限管理和计费,使你能够在 GitHub 上专注于软件开发。

您可以将 GitHub Packages 与 GitHub API、GitHub Actions 以及 web 挂钩集成在一起,以创建端到端的 DevOps 工作流程,其中包括您的代码、CI 和部署解决方案。

GitHub Packages 为常用的包管理器提供不同的包仓库,例如 npm、RubyGems、Apache Maven、Gradle、Docker 和 Nuget。 GitHub 的 Container registry 针对容器进行了优化,支持 Docker 和 OCI 映像。

今天,我们尝试实现 Github Package npm 应用发布实践。

2. 创建新库

名字:github-packages-npm-demo

3. 编写 index.js

创建 index.js 文件,并添加指示“Hello world!”的基本警报

console.log("Hello, World!");

4. npm init 初始化

使用 npm init 初始化 npm 包。 在包初始化向导中,输入名称为 @YOUR-USERNAME/YOUR-REPOSITORY 的包,并将测试脚本设置为 exit 0。 这将生成一个 package.json 文件,其中包含有关包的信息。

如何安装 npm,可以参考这篇文章。

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (github-packages-npm-demo) @ghostwritten/github-packages-npm-demo
version: (1.0.0)
description: github packages npm demo
entry point: (index.js)
test command: exit 0
git repository: (https://github.com/Ghostwritten/github-packages-npm-demo.git)
keywords:
author: ghostwritten
license: (ISC)
About to write to /root/github/github-packages-npm-demo/package.json:

{
  "name": "@ghostwritten/github-packages-npm-demo",
  "version": "1.0.0",
  "description": "github packages npm demo",
  "main": "index.js",
  "scripts": {
    "test": "exit 0"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Ghostwritten/github-packages-npm-demo.git"
  },
  "author": "ghostwritten",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/Ghostwritten/github-packages-npm-demo/issues"
  },
  "homepage": "https://github.com/Ghostwritten/github-packages-npm-demo#readme"
}


Is this OK? (yes) yes

$ ls
index.js  package.json

5. npm install

运行 npm install 以生成 package-lock.json 文件,然后提交更改并将其推送到 GitHub。

$ npm install
npm notice created a lockfile as package-lock.json. You should commit this file.
up to date in 3.702s
found 0 vulnerabilities



   ╭───────────────────────────────────────────────────────────────╮
   │                                                               │
   │      New major version of npm available! 6.14.12 → 9.2.0      │
   │   Changelog: https://github.com/npm/cli/releases/tag/v9.2.0   │
   │               Run npm install -g npm to update!               │
   │                                                               │
   ╰───────────────────────────────────────────────────────────────╯


$ ls
index.js  package.json  package-lock.json

$ git add index.js package.json package-lock.json
$ git commit -m "initialize npm package"
$ git push

6. 创建 release-package.yml

创建 .github/workflows 目录。 在此目录中,创建名为 release-package.yml 的文件。

name: Node.js Package

on:
  push:
    branches:
      - main
     
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 16
      - run: npm ci
      - run: npm test

  publish-gpr:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      packages: write
      contents: read
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 16
          registry-url: https://npm.pkg.github.com/
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

如何生成 TOKEN,请参考这篇文章。

7. 发布

告诉 NPM 使用以下方法之一发布包的范围和仓库:

  • 第一种方法
    在根目录中创建包含以下内容的 .npmrc 文件,为存储库添加 NPM 配置文件
@YOUR-USERNAME:registry=https://npm.pkg.github.com
  • 第二种方法:
    编辑 package.json 文件并指定 publishConfig 密钥:
"publishConfig": {
   "@YOUR-USERNAME:registry": "https://npm.pkg.github.com"
 }

提交并推送更改到 GitHub。

$ git add .github/workflows/release-package.yml
# Also add the file you created or edited in the previous step.
$ git add .npmrc or package.json
$ git commit -m "workflow to publish package"
$ git push

只要您的仓库中创建新版本,您创建的工作流程就会运行。 如果测试通过,则包将发布到 GitHub Packages。

8. 查看已发布的包

workflow 构建流程

发布的 npm 包

9. 管理 npm 包

将默认的 private 包转为 public

参考:

  • GitHub Packages 快速入门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126677.html

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

相关文章

高压功率放大器在磁巴克豪森噪声表征方法研究中的应用

实验名称&#xff1a;基于数据驱动的结构钢表面应力磁巴克豪森噪声表征方法研究 研究方向&#xff1a;材料测试 实验目的&#xff1a; 磁巴克豪森噪声&#xff08;Magnetic Barkhausen Noise,MBN&#xff09;技术可用于定量评估铁磁材料的表面应力。当前MBN法应力评估技术存在特…

【ESP32-Matter】基于 Matter 协议的 esp32-c3 开发板通讯测试过程

实验结果&#xff1a; 关于实验环境的搭建&#xff0c;请参考博客&#xff1a; 【ESP-Matter】基于matter协议 chip-tool 控制 esp32-c3 开发板点灯 写在前边的话&#xff1a; matter 能带来什么&#xff1f; 让多种支持 IP 网络的设备协同工作&#xff0c;如 Wi-Fi 和 Th…

商汤科技感知算法一面复盘

来源&#xff1a;投稿 作者&#xff1a;LSC 编辑&#xff1a;学姐 自我介绍 介绍自己的项目 Inception网络的核心模块是什么&#xff0c;有什么用 Inception模块的核心思想就是将不同的尺度的信息特征以并行分支的方式结合在一起&#xff0c;经过不同卷积层处理的结果矩阵在…

免费开源的箱包制造行业ERP管理系统介绍

用Odoo免费开源ERP按需打造可持续商业模型 广东百立皮具是一家集生产、采购、定制、销售为一体的箱包及配饰贸易公司&#xff0c;专营各类箱包皮革制品&#xff0c;产品业务规模遍布全世界。百立皮具距今运营已有十余年之久&#xff0c;拥有千余名员工&#xff0c;且在多国都开…

反向传播算法和计算图详细介绍及其原理详解

相关文章 梯度下降算法、随机梯度下降算法、动量随机梯度下降算法、AdaGrad算法、RMSProp算法、Adam算法详细介绍及其原理详解反向传播算法和计算图详细介绍及其原理详解 文章目录相关文章前言一、反向传播算法1.1 什么是反向传播算法&#xff1f;1.2 更泛化的例子二、计算图2…

我把这一年学的 CSS 知识点精炼总结成了一篇文档

文章目录一.CSS简介1.什么是CSS&#xff1f;二.CSS语法1.语法规则2.注释三.CSS选择器1.CSS的id选择器2.CSS的class选择器四.CSS创建1.外部样式表2.内部样式表3.内联样式4.多重样式5.多重样式的优先级五.CSS 背景1.背景颜色2.背景图像3.背景图像 - 水平或垂直平铺4.背景图像- 设…

【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(上)

目录 一、k8s 安全管理&#xff1a;认证、授权、准入控制概述 1.1 认证 认证基本介绍 授权基本介绍 准入控制基本介绍 为什么需要准入控制器呢&#xff1f; k8s 客户端访问 apiserver 的几种认证方式 kubeconfig 文件 1.2 授权 Role、RoleBinding、ClusterRole 和 C…

springboot学习(七十六) springboot中为多个controller添加统一访问URL的前缀

文章目录前言一、配置文件内添加前缀配置二、配置映射的实体三、自定义注解四、自定义PathMatch添加前缀五、测试前言 在某些情况下&#xff0c;服务的controller中前缀是一致的&#xff0c;例如所有URL的前缀都为/context-path/api/v1&#xff0c;需要为某些URL添加统一的前缀…

IFCOpenShell编译经验

IFCOpenShell编译经验 环境准备&#xff1a; Git:官网 CMake:官网 VisualStudio:官网 安装环境后需设置环境变量&#xff1a; C:\Program Files\Git\cmd D:\Program Files (x86)\cmake-3.25.1-x86_64\bin 下载开发包 编译官网 git clone --recursive https://github.com/IfcO…

【LeetCode每日一题】——1539.第 k 个缺失的正整数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【题目进阶】九【时间频度】十【代码实现】十一【提交结果】一【题目类别】 二分查找 二【题目难度】 简单 三【题目编号】 1539.第 k 个缺失的正整数 四…

关于VSCode的三个配置文件

关于VSCode的三个配置文件 若要使用VSCode来开发C程序&#xff0c;则应该了解以下三种配置文件&#xff0c;分别为&#xff1a; tasks.json&#xff1a;编译器相关的配置文件。比如&#xff0c;设置编译指令。 注&#xff1a;对于复杂的编译任务&#xff08;涉及多个源文件的编…

《Linux运维总结:Centos7.6部署redis6.2.8哨兵集群》

一、部署redis服务 1.1、环境信息 环境信息如下&#xff1a; 主机IP操作系统Redis版本CPU架构端口角色192.168.1.191Centos7.66.2.8x86_647001master192.168.1.192Centos7.66.2.8x86_647002slave192.168.1.193Centos7.66.2.8x86_647003slave192.168.1.191Centos7.66.2.8x86_6…

【嵌入式·单片机】老生常谈:学习单片机和嵌入式是否需要学习算法?

文章目录前言什么是算法嵌入式是否需要算法如何学习算法参考资料前言 刚学习单片机或嵌入式的同学可能会听说过「算法」这个词&#xff0c;部分电子信息类专业的同学也会在自己的培养计划上看到《数据结构与算法》这门课程&#xff0c;这个时候我们可能会感到疑惑&#xff0c;…

九、Java 16 新特性

九、Java 16 新特性 JDK 16 在 2021 年 3 月 16 号发布&#xff01;根据发布的规划&#xff0c;这次发布的 JDK 17 是一个长期维护的版本&#xff08;LTS)。Java 16 提供了数千个性能、稳定性和安全性更新&#xff0c;以及 17 个 JEP&#xff08;JDK 增强提案&#xff09;&…

特征工程资料整理,如何从数据中挖掘特征

特征工程资料整理&#xff0c;如何从数据中挖掘特征一、特征工程是什么二、探索性数据分析EDA参考资料&#xff1a;1. pandas_profiling【推荐】2. Sweetviz3. pandasgui4.D-tale【推荐】结论三、特征处理参考资料&#xff1a;1. 数值特征⭐️⭐️⭐️⭐️⭐️数值特征小结&…

用于高精度干涉仪的奇特量子效应

使用物质波放大、跟踪加速度&#xff0c;以前从未以便携式形式实现。&#xff08;图片来源&#xff1a;网络&#xff09; 来自法国的一组研究人员开发了第一个三向混合量子惯性传感器&#xff0c;它可以在不使用卫星信号的情况下测量加速度。这个突破性设备的核心是“物质波干涉…

传统目标跟踪——MeanShift算法

目录 一、均值漂移&#xff08;MeanShift&#xff09; 二、流程 三、代码 3.1 meanshift&#xff0b;固定框的代码 3.2 优化&#xff1a;meanshift鼠标选择 3.3 meanshift自己实现函数 四、补充知识 4.1 直方图 4.2 归一化 4.3 直方图反投影 一、均值漂移&#xff08;…

Maven 教程

Maven 教程 Maven 翻译为"专家"、“内行”&#xff0c;是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型&#xff08;缩写&#xff1a;POM&#xff09;概念&#xff0c;Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 Maven 是一…

手把手教你阿里云服务器的购买及环境搭建

1.服务器相关 程序员都需要一个自己的服务器! 用于发布自己的网站和项目&#xff01;用于操作系统的练习&#xff01;将自己的远程仓库、远程数据库、远程tomcat… 搭建在服务器上&#xff01;用于Linux进行任意的环境部署操作&#xff01; 服务器如何购买 若果你没超过24岁&am…

【Bp2Lua】多返回值和Out参数说明

【Bp2Lua】多返回值和Out参数说明 这块比较繁琐&#xff0c;有四部分需要了解&#xff1a; U蓝图LuaUnLua 最后再解释 Bp2Lua 如何处理&#xff0c;以及后续潜在的风险 Bp2Lua 如何处理 先说结论 统一当作多返回值返回特殊处理了 out参数 不在参数列表最后的情况&#xf…