1. 介绍
GitHub Packages是GitHub提供的类似npm包管理工具或平台,通过GitHub Packages,我们可以直接使用npm相关的命令、功能,并且不用将自己的npm包发布到npm仓库。也就是说,我们的npm包将托管在github上,并且可以和我们相应的仓库保持同步。
GitHub Packages看起来是这个样子


1.1 创建私有仓库
私有仓库如下, 目前没有东西, 后面可以将包的源码上传

1.2 克隆私有仓库到本地
# git clone git@github.com:kenevy/cowa-npm-repo.git
1.3 创建Personal access tokens
1. 进入github设置页面, 点击最后一个developer settings
2. 点击Personal access tokens
3. 点击Generate new token -> Generate new token(classic)
4. 填写note, explration
5. 勾选权限如下(最低限制)

6. 点击Generat token
7. 注意保存token, 只显示一次
1.4 创建npm包
1. 进入刚刚clone的项目目录下
2. 进行初始化, 命令npm init --scope=kenevy中的kenevy必须是你的github用户名, 其他随便填写一些description和author,然后一路回车就可以。

1.5 配置
有两种配置方式, 第一种是在package.json所在目录创建一个.npmrc文件, 另一种是直接修改package.json文件并增加publishConfig项
1.5.1 创建.npmrc(推荐)
在package.json所在目录创建一个.npmrc文件, 然后添加如下内容, 注意更改用户名
1
registry=https://npm.pkg.github.com/kenevy
1.5.2 package.json中添加publishConfig
1
2
3
"publishConfig": {
"registry":"https://npm.pkg.github.com/"
},
添加后package.json看起来如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"name": "@kenevy/cowa-npm-repo-tests",
"version": "1.0.0",
"description": "test",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/kenevy/cowa-npm-repo.git"
},
"publishConfig": {
"registry":"https://npm.pkg.github.com/"
},
"author": "wangcheng",
"license": "ISC",
"bugs": {
"url": "https://github.com/kenevy/cowa-npm-repo/issues"
},
"homepage": "https://github.com/kenevy/cowa-npm-repo#readme"
}
1.6 登陆
1.6.1 方式1(推荐)
刚才已经创建了.npmrc文件, 现在为了授权,我们可以继续添加以下内容
1
//npm.pkg.github.com/:_authToken=ghp_T738OJCL2cBei0B2kGANumi94EBXHMDuNvJv
最终.npmrc内容应该包含两行, 如下
1
2
3
registry=<https://npm.pkg.github.com/kenevy>
//npm.pkg.github.com/:_authToken=ghp_T738OJCL2cBei0B2kGANumi94EBXHMDuNvJv
1.6.2 方式2
1
2
3
4
npm login --registry=https://npm.pkg.github.com
Username: USERNAME
Password: TOKEN
Email: PUBLIC-EMAIL-ADDRESS
USERNAME是你的github用户名,Password就是刚才的token,邮箱虽然可以随便填写,为了规范,最好填写你的github邮箱。
登录成功类似以下输出
➜ cowa-npm-repo git:(master) ✗ npm login --registry=https://npm.pkg.github.com
Username: kenevy
Password:
Email: (this IS public) cc9165@outlook.com
Logged in as kenevy on https://npm.pkg.github.com/.
1.7 发布
执行npm publish命令发布
1 | npm publish |
提示:当使用npm publish发布结束后,一般也会将代码修改同步提供到 github 仓库,这样的话,npm包和github仓库的内容就一直会保持一致。当然,如果你说我只需要npm包,又不需要管github仓库是什么,那也可以,但是,如果你不提交到github仓库,使其和npm包保持一致的话,那么当你换一台电脑要修改并且发布这个npm包时,就有可能出现版本和内容在两台电脑上都不一样的情况。比如,你在当前电脑发布了一个v1.1.0版本的npm包,在此之前,版本号是v1.0.3,发布v1.1.0之后,你没有提交到github远程仓库,当你在另一台电脑上把仓库克隆下来,package.json版本依然是v1.0.3(因为你的v1.1.0并没有提交),你修改了点内容,然后npm version patch将版本号修改为v1.0.4,然后npm publish发布后,你远程的npm包将以最新的一次发布即v1.0.4的内容为准,那么之前修改的v1.1.0的内容不起任何作用,这样的话,我们就难以保证版本号和内容的统一。因此,强烈建议发布npm包后,立即将改动的代码提交到远程的github仓库。
1.8 使用npm包
创建.npmrc
这里在项目里面创建.npmrc和上面package里面的.npmrc完全一样, 你也可以直接复制到项目中。
登陆(同创建npm包一样, 有2种方式)
1.9 安装npm包
执行
1 | npm install @kenevy/cowa-npm-repo-tests@1.0.1 |
1.10 发布多个npm包
可以将多个npm包发到同一个私有仓库中, 很方便便于管理。目录结构如下

本质上是将包的源码放到同一个项目中, 发布的时候需要进入每个包的目录下,即包含package.json的目录下, 然后执行npm publish.
__END__
文章出处:GitHub上传私有npm包及使用
作者签名:简单地活着, 肆意又精彩.
关于主题:Hexo - Live For Code
版权声明:文章除特别声明外,均采用 BY-NC-SA 许可协议,转载请注明出处