发布与安装Github Packages
在GitHub創(chuàng)建一個(gè)新倉(cāng)庫(kù)作為測(cè)試GitHub Package使用,我創(chuàng)建的倉(cāng)庫(kù)地址:airglass/test-github-package。從GitHub Setting,按下圖步驟創(chuàng)建“Personal access tokens”(簡(jiǎn)稱PAT)。
PAT可作為管理GitHub倉(cāng)庫(kù)或其它需要授權(quán)才能使用的API的密鑰使用,發(fā)布GitHub Package對(duì)應(yīng)“Write”操作,安裝GitHub Package對(duì)應(yīng)”Read“操作,此兩種操作都需明確要設(shè)置“讀/寫”GitHub Package權(quán)限。如下圖,勾選“write:packages”權(quán)限后,“repo”和“read:package”權(quán)限自動(dòng)勾選。
生成PAT后,不要立即刷新或關(guān)閉當(dāng)前頁(yè)面,否則將再也看不到如下圖創(chuàng)建的PAT。停留在當(dāng)前頁(yè)面完成后續(xù)步驟。
將下方這一行代碼添加到“~”家目錄下的“.npmrc”文件中,并將“ACCESS_TOKEN”替換為在上面創(chuàng)建的PAT。
//npm.pkg.github.com/:_authToken=ACCESS_TOKEN這是我的“~/.npmrc”文件,我已經(jīng)將上面的一行代碼添加到文件的最后一行了。此時(shí)就可以關(guān)閉或刷新剛才創(chuàng)建PAT的頁(yè)面。
回到最一開(kāi)始你創(chuàng)建的“test-github-package”倉(cāng)庫(kù),將倉(cāng)庫(kù)代碼Clone到你的電腦上。我已經(jīng)把這個(gè)測(cè)試項(xiàng)目clone到我的電腦上了。
在terminal中分別執(zhí)行下面兩行命令:進(jìn)入你的測(cè)試項(xiàng)目目錄內(nèi)(“test-github-package”替換成你的項(xiàng)目目錄名);初始化NPM(-y選項(xiàng)表示稍后自動(dòng)創(chuàng)建的package.json會(huì)全部使用默認(rèn)值):
cd test-github-package npm init -y對(duì)package.json做一些修改。在“name”屬性的原有名稱前加上你的GitHub用戶名,并且使用“@”符號(hào)開(kāi)頭,用“/”符號(hào)分隔用戶名和項(xiàng)目倉(cāng)庫(kù)名稱。添加一個(gè)新屬性publishConfig,顧名思義,設(shè)置package要發(fā)布的位置——發(fā)布到github而不是默認(rèn)的npm。如下是我對(duì)package.json所作的修改:
{"name": "@airglass/test-github-package",..."publishConfig": {"registry":"https://npm.pkg.github.com"},... }發(fā)布Github Package
回到terminal,執(zhí)行“npm publish”,等待一會(huì)兒,名為“@airglass/test-github-package”的package就發(fā)布成功了。
在真實(shí)的項(xiàng)目中,未編譯的源文件一般會(huì)存放在“src”目錄,構(gòu)建后的文件會(huì)放在“dist”目錄。“dist”一般不會(huì)提交到代碼倉(cāng)庫(kù),所以會(huì)在項(xiàng)目根目錄下添加“.gitignore”文件(類似文件黑名單),將“dist”目錄加入其中,出現(xiàn)在其中的文件或目錄都不會(huì)提交到GitHub倉(cāng)庫(kù)。
此時(shí)用“npm publish --dry-run”命令測(cè)試發(fā)布一下(此命令不會(huì)真正發(fā)布package),發(fā)現(xiàn)此時(shí)發(fā)布的package中也不會(huì)包含“dist”目錄了。添加空的“.npmignore”文件(類似文件黑名單),即可覆蓋“.gitignore”對(duì)發(fā)布package時(shí)忽略那些文件產(chǎn)生的影響。
一句話總:對(duì)于控制哪些文件或目錄會(huì)被Git版本管理,取決于“.gitignore”文件,對(duì)于控制哪些文件或目錄會(huì)隨package發(fā)布,“.npmignore”的優(yōu)先級(jí)高于“.gitignore”文件。
但我希望發(fā)布的package中只包含構(gòu)建后的“dist”目錄,而不包含“src”目錄,只需在“.npmignore”中添加一行“src”,發(fā)布的包中就不會(huì)包含“src”目錄及其中的文件。
控制發(fā)布的包中需要包含哪些文件,白名單或許比黑名單更好用。“.gitignore”和“.npmignore”都是黑名單,出現(xiàn)在其中的文件要么不會(huì)被Git管理,要么不會(huì)發(fā)布到包。“package.json”中有個(gè)“files”屬性類似白名單,它能控制哪些文件或目錄會(huì)發(fā)布。“files”屬性的優(yōu)先級(jí)高于“.npmignore”。
... "files": ["dist" ], ...安裝GitHub Package
用npm install命令安裝package,需要將”–registry“選項(xiàng)設(shè)置為“https://npm.pkg.github.com”,否則默認(rèn)從“https://registry.npmjs.org”搜索要安裝的package,發(fā)生因找不到package而安裝失敗的問(wèn)題。
npm install @airglass/test-github-package@1.0.0 --registry=https://npm.pkg.github.com也可在項(xiàng)目根目錄下創(chuàng)建“.npmrc”文件,以指定在該目錄安裝的所有packages都從這個(gè)registry源下載:
registry=https://npm.pkg.github.com用“–prefix”選項(xiàng)設(shè)置指定的安裝位置,如安裝到當(dāng)前相對(duì)路徑下的my-packages目錄中:
npm install --prefix ./my-packages @airglass/test-github-package@1.0.0自定義安裝位置后的目錄結(jié)構(gòu)如下:
my-packages |- node_modules|- @airglass|- test-github-package|- package.json|- README.md .npmrc package-lock.json總結(jié)
以上是生活随笔為你收集整理的发布与安装Github Packages的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sql 不允许保存更改 解决办法
- 下一篇: SQL Server修改表结构,不允许保