開篇 經(jīng)上篇文章的介紹,實(shí)現(xiàn)了獲取下載目錄地址,接下來實(shí)現(xiàn)下載指定模板的功能。 背景 通過很多章節(jié)過后,已經(jīng)可以拿到模板名稱,模板版本號(hào),下載目錄地址,這些信息都是為了下載指定模板做準(zhǔn)備的。 實(shí)現(xiàn) 如何從 GitHub 下載模板 可以借助 download-git-repo 這個(gè)庫來下載 GitHu
經(jīng)過上一篇文章的介紹,我們已經(jīng)實(shí)現(xiàn)了獲取下載目錄地址的功能,接下來我們將著手實(shí)現(xiàn)下載指定模板的功能。
通過前面的章節(jié),我們已經(jīng)能夠獲取模板名稱、模板版本號(hào)以及下載目錄地址,這些信息都為下載指定模板做好了準(zhǔn)備。
接下來,我們將介紹如何從GitHub下載模板。
我們可以使用
download-git-repo
這個(gè)庫來下載GitHub上的模板。在npm官網(wǎng)搜索這個(gè)庫,我們可以找到官方介紹并進(jìn)行安裝:
npm install download-git-repo
安裝完成后,在工程中引入這個(gè)庫:
// 導(dǎo)入 download-git-repo,用于下載模板
const downloadGitRepo = require('download-git-repo');
然后將之前獲取的下載路徑也導(dǎo)入進(jìn)來:
// 導(dǎo)入 downloadDirPath,用于獲取下載路徑
const { downloadDirPath } = require('./const');
基本工作準(zhǔn)備完成,現(xiàn)在我們需要學(xué)習(xí)如何使用這個(gè)庫。在官方示例中,我們發(fā)現(xiàn)了一個(gè)使用HTTP的示例:
我們發(fā)現(xiàn)回調(diào)是API的方式,但我們想要使用Promise的方式。因此,我們需要將回調(diào)函數(shù)API方式轉(zhuǎn)換為Promise方式。
為了實(shí)現(xiàn)這一點(diǎn),我們需要使用Node.js的內(nèi)置模塊
util
,這個(gè)模塊可以將回調(diào)函數(shù)轉(zhuǎn)換為Promise函數(shù)。具體使用方法如下:
// 導(dǎo)入 util 模塊
const { promisify } = require('util');
然后將
downloadGitRepo
方法轉(zhuǎn)換為Promise方法:
// 導(dǎo)入 download-git-repo,用于下載模板
const downloadGitRepo = promisify(require('download-git-repo'));
這樣就將
downloadGitRepo
方法轉(zhuǎn)換為Promise方法了,接下來就可以使用Promise方法來下載模板了。
下載指定模板的方法很簡(jiǎn)單,只需要調(diào)用
downloadGitRepo
方法,傳入兩個(gè)參數(shù),第一個(gè)參數(shù)是GitHub上的模板地址,第二個(gè)參數(shù)是下載到本地的路徑。
在官方的options介紹中有提供詳解:
我們這里采用的是HTTP方式,具體代碼如下:
const downloadTemplate = async (templateName, version) => {
// https://github.com/kevva/download#options
// 組織機(jī)構(gòu)的名稱/模板名稱#版本號(hào)
// 1.拼接模板在github上的地址
let url = `neo-it6666/${templateName`;
if (version) {
url += `#${version}`;
}
// 2.拼接存儲(chǔ)下載好的模板的路徑
const downloadPath = `${downloadDirPath}\\${templateName}`;
await downloadGitRepo(url, downloadPath);
return downloadPath;
}
我們單獨(dú)封裝了一個(gè)函數(shù)
downloadTemplate
,這個(gè)函數(shù)接收兩個(gè)參數(shù),第一個(gè)參數(shù)是模板名稱,第二個(gè)參數(shù)是版本號(hào),然后拼接GitHub上的模板地址,最后調(diào)用
downloadGitRepo
方法,將模板下載到本地。
最后使用這個(gè)函數(shù),在
create
指令主流程中調(diào)用:
const destPath = waitLoading('downloading template...', downloadTemplate)(template, version)
console.log(destPath)
這樣就實(shí)現(xiàn)了下載指定模板的功能。來測(cè)試一下,首先在終端中輸入指令:
nue-cli create test
可以看到已經(jīng)下載成功了,然后再去用戶目錄中查看:
可以看到已經(jīng)下載成功了,這樣就實(shí)現(xiàn)了下載指定模板的功能。
如果您覺得文章對(duì)您有所幫助,歡迎您點(diǎn)贊、評(píng)論、轉(zhuǎn)發(fā),也歡迎您關(guān)注我的公眾號(hào)『BNTang』,我會(huì)在公眾號(hào)中分享更多的技術(shù)文章。
小編推薦閱讀機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)