999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

NodeJs添加代碼版權(quán)信息命令工具的設(shè)計與實現(xiàn)

2023-09-25 17:13:28張文豪
現(xiàn)代計算機 2023年14期
關(guān)鍵詞:信息

張文豪

(廣東白云學(xué)院大數(shù)據(jù)與計算機學(xué)院,廣州 510450)

0 引言

隨著Web 技術(shù)的發(fā)展,軟件項目中前端代碼越來越多,前端技術(shù)在軟件項目中的作用越來越重要,HTML、Javascript、Css 等前端技術(shù)成為軟件開發(fā)必備的技能[1]。2009 年5 月Ryan Dahl發(fā)布了NodeJs,是一個基于Chrome V8引擎的JavaScript 運行環(huán)境,讓JavaScript 運行在服務(wù)端的開發(fā)平臺,也使JavaScript 成為了全球應(yīng)用最廣泛的開發(fā)語言[2]。2010 年1 月,NodeJs軟件包管理工具NPM 也正式上線,使得NodeJs在項目中的應(yīng)用更加方便[3]。當前幾乎所有前端項目都離不開NodeJs 的相關(guān)技術(shù),也形成了很多優(yōu)秀的前端項目構(gòu)建工具,如Vite、Webpack、Rollup 等,并且也已經(jīng)存在很多可以自動添加代碼版權(quán)信息的插件,但是仍存在需要自己配置好版權(quán)信息才能完成的問題[4-6]。由于package.json 文件已經(jīng)包含了主要的版權(quán)信息,如軟件名稱、版本號、作者、開源協(xié)議等,每個NodeJs 模塊軟件包又都必須包含一個package.json 文件,可以通過package.json 文件來直接獲取版權(quán)信息[7]。

本文提出通過獲取package.json 文件里的相關(guān)版權(quán)信息來自動生成代碼文件的版權(quán)信息,實現(xiàn)開箱即用的效果,無需任何配置就能自動添加代碼的版權(quán)信息,同時考慮到前端項目構(gòu)建工具眾多,將該工具開發(fā)為一個NodeJs 的命令行工具,能讓該工具在所有前端項目中使用,可以有效提高該工具的通用性。

1 相關(guān)技術(shù)

NodeJs是Ryan Dahl于2009年發(fā)起的一個開源項目,是一個基于Chrome V8 引擎,能夠快速構(gòu)建網(wǎng)絡(luò)服務(wù)與應(yīng)用的JavaScript 執(zhí)行平臺,目前被廣泛應(yīng)用到各種Web應(yīng)用的開發(fā)項目。

NPM 的全稱是NodeJs Package Manager,是一個NodeJs 包管理和分發(fā)工具,已經(jīng)成為非官方的發(fā)布NodeJs模塊(包)的標準。

package.json 是基于NPM 標準的NodeJs 模塊(包)必須存在的描述文件,包括模塊名稱、版本號、作者、模塊描述、關(guān)鍵字、軟件許可證、運行腳本、軟件依賴包等信息。

npx 的全稱是execute npm package binaries,是NPM5.2 以后新增的命令工具,是一個NPM包的執(zhí)行器,可以用于執(zhí)行各種命令[8]。

GitHub 于2008 年正式上線,是一個面向開源及私有軟件項目的托管平臺[9]。

workflow文件是GitHub Actions 的配置文件,存放在代碼倉庫的.github/workflows/目錄下。比如,寫一個npm_publish.yaml文件,存儲的目錄就是.github/workflows/publish.yaml。GitHub 只要發(fā)現(xiàn).github/workflows 目錄下里面有.yml 文件,就會自動運行該文件[10]。

2 設(shè)計方案

首先根據(jù)package.json 的信息自動生成代碼版權(quán)信息,然后掃描項目構(gòu)建的代碼目錄,并將版權(quán)信息添加到代碼文件的頂部。

2.1 代碼版權(quán)信息描述模板

pkg 為解析package.json 文件后的對象,name 為模塊名稱/軟件名稱、version 為版本號、homepage 為官方主頁、author 為軟件作者、license 為軟件許可證、year 是根據(jù)當前時間獲取的年份。

2.2 執(zhí)行流程

通過NPM 發(fā)布NodeJs 模塊通常都是指定dist目錄(構(gòu)建完成的代碼目錄)進行發(fā)布,可以默認掃描dist 目錄下所有代碼文件,并添加代碼版權(quán)信息就可以滿足大部分的需求,同時也允許用戶通過參數(shù)增加需要掃描的目錄,來增加其通用性,如圖1所示。

圖1 具體流程

3 實現(xiàn)

3.1 初始化模塊

打開命令行終端,使用mkdir新建模塊目錄xq-banner,使用cd 命令進入模塊目錄,執(zhí)行npm init 初始化模塊,按照提示完成相應(yīng)信息的填寫,系統(tǒng)自動完成package.json 的創(chuàng)建,最后再根據(jù)模塊實際情況調(diào)整后的package.json 內(nèi)容如下:

屬性name 要保證在npm 模塊包中是唯一的,才能發(fā)布成功。同時由于本文實現(xiàn)的是一個NodeJs 的命令工具,必須指定bin 屬性的值,該屬性由鍵值對組成,鍵表示命令,值表示對應(yīng)的程序文件,例如{“xq-banner”:“./bin/banner.js”},表示該模塊存在xq-banner 命令,執(zhí)行xq-banner命令時,就是執(zhí)行‘./bin/banner.js’的程序文件。

3.2 程序?qū)崿F(xiàn)

(1)確定package.json 路徑。用戶安裝本文實現(xiàn)的xq-banner 模塊時,會將程序安裝在用戶模塊下的node_modules 目錄,同時xq-banner 命令執(zhí)行的是‘./bin/banner.js’文件,banner.js 文件在用戶模塊目錄的路徑為:‘node_modules/xq-banner/bin/banner.js’,因此用戶模塊的package.json 路徑相對于banner.js 文件的路徑為:‘../../../package.json’。

(2)生成代碼版權(quán)信息。確定package.json路徑后,使用JSON 工具包解析package.json 的文件,可以得到package.json 的所有信息。同時使用日期工具,根據(jù)程序執(zhí)行時間得到當前的年份。最后按照2.1節(jié)生成代碼版權(quán)的信息。

(3)代碼實現(xiàn)。代碼實現(xiàn)可以到github 平臺查看:https://github.com/xqkeji/xq-banner。

3.3 發(fā)布

通常開發(fā)完成一個NPM 模塊后,可以使用npm publish 命令來完成發(fā)布,但是一般的項目代碼都是托管到github 平臺上,因此可以利用github 的工作流來完成自動發(fā)布到https://www.npmjs.com/服務(wù)器上。

(1)登錄npmjs 的賬戶,并創(chuàng)建一個Access Token。

如圖2 所示,在New Access Token 頁面輸入Access Token 的name 屬性,然后選擇用于Publish,最后點擊‘Generate Token’后就會生成一個Access Token。

圖2 創(chuàng)建Access Token

(2)在xq-banner 的github 代碼庫新建一個工作流程(workflow)。

如圖3所示,模塊發(fā)布工作流程的代碼是相對固定的,只有${{secrets.npm_token}}是動態(tài)的,代表npmjs服務(wù)器上的Access Token值。

圖3 模塊發(fā)布工作流程代碼

圖4 github代碼庫新建密鑰頁面

(3)在xq-banner的github代碼庫新建密鑰。

Name 為密鑰名稱,與工作流程代碼里的${{secrets.npm_token}}名稱保持一致。Secret 填寫npmjs服務(wù)器上生成的Access Token的值。

通過以上三個步驟后,只要在github代碼庫中新建一個版本標簽,就會自動將xq-banner 代碼庫的代碼也同時發(fā)布到npmjs 服務(wù)器上的xq-banner模塊。

4 應(yīng)用

(1)安裝。

在需要自動添加代碼版權(quán)信息的npm模塊目錄下,執(zhí)行命令:npm i xq-banner,安裝xq-banner模塊。如圖5所示。

圖5 安裝xq-banner

(2)使用。

安裝xq-banner 模塊后,可以直接執(zhí)行npx xq-banner命令為dist目錄下的所有代碼添加版權(quán)信息,也可以將npx xq-banner 命令串聯(lián)到package.json的構(gòu)建命令后面,構(gòu)建完成后自動執(zhí)行。package.json 執(zhí)行構(gòu)建腳本示例:{“build”:“npx unbuild && npm run convert && npm run min &&npx xq-banner”}。構(gòu)建執(zhí)行效果如圖6所示。

執(zhí)行后構(gòu)建目錄dist下的所有代碼文件頂部都會自動添加如下的版權(quán)信息。

5 結(jié)語

本文使用NPM 模塊的標準,開發(fā)了一個可以通過命令執(zhí)行xq-banner 模塊,該模塊默認實現(xiàn)了將dist目錄下的所有代碼文件頂部自動添加版權(quán)信息,也可以通過命令行參數(shù)指定其他目錄來為代碼自動添加版權(quán)信息。只要安裝xqbanner 模塊,就能實現(xiàn)無需任何配置,開箱即用的效果,同時xq-banner 是一個NodeJs 命令行模塊,適用于任何的前端項目,具有很強的通用性。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
展會信息
展會信息
展會信息
展會信息
展會信息
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产精品手机在线观看你懂的| 中文字幕佐山爱一区二区免费| 久久国产拍爱| 婷婷亚洲天堂| 亚洲日韩精品综合在线一区二区| 日韩在线第三页| 22sihu国产精品视频影视资讯| 亚洲日本一本dvd高清| 午夜无码一区二区三区| 欧美另类第一页| 国产电话自拍伊人| 亚洲91在线精品| 国产91小视频| 青草午夜精品视频在线观看| 国产欧美日韩在线一区| 国产原创演绎剧情有字幕的| 国产剧情一区二区| 国模视频一区二区| 日本亚洲欧美在线| 国产日韩欧美黄色片免费观看| 亚洲无线观看| 综合人妻久久一区二区精品| 国产福利免费在线观看| 精品一区二区三区波多野结衣 | 日韩欧美国产另类| 91成人免费观看| 国产特一级毛片| 波多野结衣中文字幕久久| 伊人久久大香线蕉影院| 无码中文AⅤ在线观看| 精品三级网站| 中文字幕精品一区二区三区视频| 无码内射中文字幕岛国片| 91精品国产一区自在线拍| 国产欧美日韩视频一区二区三区| 97se亚洲| 久996视频精品免费观看| 国产一区免费在线观看| 极品尤物av美乳在线观看| 亚洲A∨无码精品午夜在线观看| 免费在线一区| 欧美国产在线一区| 国产91丝袜在线播放动漫| 玖玖精品视频在线观看| 精品人妻系列无码专区久久| 中文字幕日韩久久综合影院| 一本一本大道香蕉久在线播放| 黄色国产在线| 毛片卡一卡二| 香蕉综合在线视频91| 亚洲精品国产成人7777| 黄色在线不卡| 欧美日韩一区二区在线免费观看| 色综合成人| 九色视频线上播放| 欧美日韩在线观看一区二区三区| 久久香蕉欧美精品| 中国成人在线视频| 99国产精品一区二区| 毛片久久久| 看国产毛片| AV片亚洲国产男人的天堂| 在线国产91| 国内精品久久久久鸭| 一级毛片在线播放| 女高中生自慰污污网站| 国产精品私拍在线爆乳| 欧美v在线| a毛片在线| 久久精品国产在热久久2019| 国产黄网永久免费| 欧美亚洲国产视频| 91免费观看视频| 无码在线激情片| 一级全免费视频播放| 日韩美毛片| 白丝美女办公室高潮喷水视频| 亚洲一级色| 无码高潮喷水专区久久| 欧美视频在线第一页| 亚洲a免费| 中文字幕佐山爱一区二区免费|