发布与安装Github Packages

在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值