開篇 經(jīng)上篇文章的介紹,實現(xiàn)了獲取下載目錄地址,接下來實現(xiàn)下載指定模板的功能。 背景 通過很多章節(jié)過后,已經(jīng)可以拿到模板名稱,模板版本號,下載目錄地址,這些信息都是為了下載指定模板做準備的。 實現(xiàn) 如何從 GitHub 下載模板 可以借助 download-git-repo 這個庫來下載 GitHu
經(jīng)過上一篇文章的介紹,我們已經(jīng)實現(xiàn)了獲取下載目錄地址的功能,接下來我們將著手實現(xiàn)下載指定模板的功能。
通過前面的章節(jié),我們已經(jīng)能夠獲取模板名稱、模板版本號以及下載目錄地址,這些信息都為下載指定模板做好了準備。
接下來,我們將介紹如何從GitHub下載模板。
我們可以使用
download-git-repo
這個庫來下載GitHub上的模板。在npm官網(wǎng)搜索這個庫,我們可以找到官方介紹并進行安裝:
npm install download-git-repo
安裝完成后,在工程中引入這個庫:
// 導入 download-git-repo,用于下載模板
const downloadGitRepo = require('download-git-repo');
然后將之前獲取的下載路徑也導入進來:
// 導入 downloadDirPath,用于獲取下載路徑
const { downloadDirPath } = require('./const');
基本工作準備完成,現(xiàn)在我們需要學習如何使用這個庫。在官方示例中,我們發(fā)現(xiàn)了一個使用HTTP的示例:
我們發(fā)現(xiàn)回調(diào)是API的方式,但我們想要使用Promise的方式。因此,我們需要將回調(diào)函數(shù)API方式轉換為Promise方式。
為了實現(xiàn)這一點,我們需要使用Node.js的內(nèi)置模塊
util
,這個模塊可以將回調(diào)函數(shù)轉換為Promise函數(shù)。具體使用方法如下:
// 導入 util 模塊
const { promisify } = require('util');
然后將
downloadGitRepo
方法轉換為Promise方法:
// 導入 download-git-repo,用于下載模板
const downloadGitRepo = promisify(require('download-git-repo'));
這樣就將
downloadGitRepo
方法轉換為Promise方法了,接下來就可以使用Promise方法來下載模板了。
下載指定模板的方法很簡單,只需要調(diào)用
downloadGitRepo
方法,傳入兩個參數(shù),第一個參數(shù)是GitHub上的模板地址,第二個參數(shù)是下載到本地的路徑。
在官方的options介紹中有提供詳解:
我們這里采用的是HTTP方式,具體代碼如下:
const downloadTemplate = async (templateName, version) => {
// https://github.com/kevva/download#options
// 組織機構的名稱/模板名稱#版本號
// 1.拼接模板在github上的地址
let url = `neo-it6666/${templateName`;
if (version) {
url += `#${version}`;
}
// 2.拼接存儲下載好的模板的路徑
const downloadPath = `${downloadDirPath}\\${templateName}`;
await downloadGitRepo(url, downloadPath);
return downloadPath;
}
我們單獨封裝了一個函數(shù)
downloadTemplate
,這個函數(shù)接收兩個參數(shù),第一個參數(shù)是模板名稱,第二個參數(shù)是版本號,然后拼接GitHub上的模板地址,最后調(diào)用
downloadGitRepo
方法,將模板下載到本地。
最后使用這個函數(shù),在
create
指令主流程中調(diào)用:
const destPath = waitLoading('downloading template...', downloadTemplate)(template, version)
console.log(destPath)
這樣就實現(xiàn)了下載指定模板的功能。來測試一下,首先在終端中輸入指令:
nue-cli create test
可以看到已經(jīng)下載成功了,然后再去用戶目錄中查看:
可以看到已經(jīng)下載成功了,這樣就實現(xiàn)了下載指定模板的功能。
如果您覺得文章對您有所幫助,歡迎您點贊、評論、轉發(fā),也歡迎您關注我的公眾號『BNTang』,我會在公眾號中分享更多的技術文章。
小編推薦閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)