在GitHub创建一个新仓库作为测试GitHub Package使用,我创建的仓库地址:airglass/test-github-package。从GitHub Setting,按下图步骤创建“Personal access tokens”(简称PAT)。

PAT可作为管理GitHub仓库或其它需要授权才能使用的API的密钥使用,发布GitHub Package对应“Write”操作,安装GitHub Package对应”Read“操作,此两种操作都需明确要设置“读/写”GitHub Package权限。如下图,勾选“write:packages”权限后,“repo”和“read:package”权限自动勾选。

生成PAT后,不要立即刷新或关闭当前页面,否则将再也看不到如下图创建的PAT。停留在当前页面完成后续步骤。

将下方这一行代码添加到“~”家目录下的“.npmrc”文件中,并将“ACCESS_TOKEN”替换为在上面创建的PAT。

//npm.pkg.github.com/:_authToken=ACCESS_TOKEN

这是我的“~/.npmrc”文件,我已经将上面的一行代码添加到文件的最后一行了。此时就可以关闭或刷新刚才创建PAT的页面。

回到最一开始你创建的“test-github-package”仓库,将仓库代码Clone到你的电脑上。我已经把这个测试项目clone到我的电脑上了。

在terminal中分别执行下面两行命令:进入你的测试项目目录内(“test-github-package”替换成你的项目目录名);初始化NPM(-y选项表示稍后自动创建的package.json会全部使用默认值):

cd test-github-package
npm init -y

对package.json做一些修改。在“name”属性的原有名称前加上你的GitHub用户名,并且使用“@”符号开头,用“/”符号分隔用户名和项目仓库名称。添加一个新属性publishConfig,顾名思义,设置package要发布的位置——发布到github而不是默认的npm。如下是我对package.json所作的修改:

{"name": "@airglass/test-github-package",..."publishConfig": {"registry":"https://npm.pkg.github.com"},...
}

发布Github Package

回到terminal,执行“npm publish”,等待一会儿,名为“@airglass/test-github-package”的package就发布成功了。

在真实的项目中,未编译的源文件一般会存放在“src”目录,构建后的文件会放在“dist”目录。“dist”一般不会提交到代码仓库,所以会在项目根目录下添加“.gitignore”文件(类似文件黑名单),将“dist”目录加入其中,出现在其中的文件或目录都不会提交到GitHub仓库。

此时用“npm publish --dry-run”命令测试发布一下(此命令不会真正发布package),发现此时发布的package中也不会包含“dist”目录了。添加空的“.npmignore”文件(类似文件黑名单),即可覆盖“.gitignore”对发布package时忽略那些文件产生的影响。

一句话总:对于控制哪些文件或目录会被Git版本管理,取决于“.gitignore”文件,对于控制哪些文件或目录会随package发布,“.npmignore”的优先级高于“.gitignore”文件。

但我希望发布的package中只包含构建后的“dist”目录,而不包含“src”目录,只需在“.npmignore”中添加一行“src”,发布的包中就不会包含“src”目录及其中的文件。

控制发布的包中需要包含哪些文件,白名单或许比黑名单更好用。“.gitignore”和“.npmignore”都是黑名单,出现在其中的文件要么不会被Git管理,要么不会发布到包。“package.json”中有个“files”属性类似白名单,它能控制哪些文件或目录会发布。“files”属性的优先级高于“.npmignore”。

...
"files": ["dist"
],
...

安装GitHub Package

npm install命令安装package,需要将”–registry“选项设置为“https://npm.pkg.github.com”,否则默认从“https://registry.npmjs.org”搜索要安装的package,发生因找不到package而安装失败的问题。

npm install @airglass/test-github-package@1.0.0 --registry=https://npm.pkg.github.com

也可在项目根目录下创建“.npmrc”文件,以指定在该目录安装的所有packages都从这个registry源下载:

registry=https://npm.pkg.github.com

用“–prefix”选项设置指定的安装位置,如安装到当前相对路径下的my-packages目录中:

npm install --prefix ./my-packages @airglass/test-github-package@1.0.0

自定义安装位置后的目录结构如下:

my-packages
|- node_modules|- @airglass|- test-github-package|- package.json|- README.md
.npmrc
package-lock.json

发布与安装Github Packages相关推荐

  1. 发布npm包到GitHub Packages

    发布Npm包到GitHub Packages Github集成了GitHub Packages功能,目前提供了Npm.Docker.Maven.NuGet.RubyGems的包管理工具,可以通过Git ...

  2. Python 制作、发布与安装模块

    文章目录 1. 按 2. 设置模块(.py文件)和包(文件夹) 2.1. 创建目录和文件 2.2. 设置setup.py文件的内容 2.3. 设置test.py文件的内容 2.4. 设置\__init ...

  3. vs发布免安装文件_戒掉PC,免pc开发,cloud ide and debug设想

    本文关键字:分布式IDE,cloudide,远程编码,远程调试,jupyter with visual debugger support 编程界有关于语言的圣战,OS之争,也甚至有代码编辑器是选择cu ...

  4. python自定义包的发布与安装

    python自定义包的发布与安装 编写自定义包代码 代码结构 your_dir_name src __init__.py your_package_name __init__.py module1.p ...

  5. R语言安装包,安装Github包的三种方法

    以安装Github上的Achilles包为例进行安装说明. 描述 1.安装包路径:https://github.com/OHDSI/Achilles#getting-started 2.该包功能:进行 ...

  6. 【Visual Studio 2019】上传代码到 GitHub ( 16.9.2 版本 | 安装 GitHub 扩展插件 | 创建 Git 仓库 | 推送到远程仓库 )

    文章目录 一.安装 GitHub 扩展插件 二.创建 Git 仓库 三.推送到远程仓库 今天将 Visual Studio 2019 从 16.3.6 版本升级到了 16.9.2 版本 , 发现相关操 ...

  7. 【OpenGL】二、Visual Studio 2019 配置 GitHub ( 下载并安装 GitHub 扩展 | 配置 GitHub )

    文章目录 一.下载并安装 GitHub 扩展 二.配置 GitHub 一.下载并安装 GitHub 扩展 选择 菜单栏 -> 扩展 -> 管理扩展 选项 ; 下载 " GitHu ...

  8. Linux下安装GitHub

    安装GitHub 打开终端,输入命令 sudo apt-get install git git-core git-doc 一路安装下去以后,输入下面命令: ssh-keygen -t rsa -C & ...

  9. 安装GitHub代码所需包

    安装GitHub代码所需包 pip install -r requirements.txt -i https://pypi.douban.com/simple

  10. Python安装Github包,离线包和在线包

    离线安装,在线安装Python包 方法一:通过在线网站下载安装Python包 Python安装包下载网站""https://www.lfd.uci.edu/~gohlke/pyth ...

最新文章

  1. 管理Vim插件的插件——Vundle
  2. 012_日期内建函数
  3. c语言程序中的注释必须单独占一行,C语言习题第一章
  4. Netflix如何通过支持TLS 1.3提供更安全高效的播放体验
  5. 大一计算机课实训总结1000字,大一计算机实训报告.doc
  6. 前端学习(1266):axios的常见api
  7. 用html5做淡出淡入效果,在Html5 canvas中淡入淡出
  8. python defaultdict 类属性_Python collections.defaultdict模块用法详解
  9. [Ext JS 4] Grid 组件
  10. WCF之旅读书笔记(2):WCF如何通过Binding进行通信
  11. 2021-09-1311. 盛最多水的容器 数组 双指针
  12. Linux上安装GCC编译器过程实录
  13. 使用excel绘制统计分布表(T分布表)
  14. 常见GIS工具软件介绍
  15. mysql 正则表达式 标点符号_正则表达式-匹配标点符号
  16. #项目的编译和发布 #静态发布新浪云 #node服务器发布新浪云 #nodejs服务器部署数据库 #新浪云前后端结合
  17. 所有男生女生看了都会感动的分手理由(天堂杂志转贴)
  18. 纺织ERP_印染ERP软件_指点ERP简介
  19. 顾问风采 | LF AI Data 基金会完成换届,堵俊平担任董事会主席、星爵担任会员总代表...
  20. 小乌龟克隆报错:git add not exit cleanly

热门文章

  1. VS2015安装使用番茄助手Visual Assist
  2. 天天生鲜项目 python邮箱_Django之天天生鲜项目
  3. 4.6 TF常用功能模块
  4. GoEasy小程序即时通讯源码 v1.1.0/基于GoEasy提供的websocket通讯服务
  5. UWP,WPF 打包Roboto 字体
  6. UG不用计算机名,win10系统安装UG软件后打开提示计算机名不对的解决步骤
  7. win 10 linux shell,实用工具:Win10下的bash shell打开教程
  8. OPenDDS程序 的 实现+运行
  9. 微型计算机原理与接口周荷琴,微型计算机原理与接口技术周荷琴
  10. 联想拯救者R720黑苹果EFI分享