您的位置:首頁 > 軟件教程 > 教程 > 實(shí)現(xiàn)下載指定模板的功能

實(shí)現(xiàn)下載指定模板的功能

來源:好特整理 | 時(shí)間:2024-06-02 15:49:16 | 閱讀:91 |  標(biāo)簽: v C VUE   | 分享到:

開篇 經(jīng)上篇文章的介紹,實(shí)現(xiàn)了獲取下載目錄地址,接下來實(shí)現(xiàn)下載指定模板的功能。 背景 通過很多章節(jié)過后,已經(jīng)可以拿到模板名稱,模板版本號(hào),下載目錄地址,這些信息都是為了下載指定模板做準(zhǔn)備的。 實(shí)現(xiàn) 如何從 GitHub 下載模板 可以借助 download-git-repo 這個(gè)庫來下載 GitHu

實(shí)現(xiàn)下載指定模板的功能

經(jīng)過上一篇文章的介紹,我們已經(jīng)實(shí)現(xiàn)了獲取下載目錄地址的功能,接下來我們將著手實(shí)現(xiàn)下載指定模板的功能。

通過前面的章節(jié),我們已經(jīng)能夠獲取模板名稱、模板版本號(hào)以及下載目錄地址,這些信息都為下載指定模板做好了準(zhǔn)備。

接下來,我們將介紹如何從GitHub下載模板。

實(shí)現(xiàn)下載指定模板的功能

我們可以使用 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的示例:

實(shí)現(xiàn)下載指定模板的功能

我們發(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'));

實(shí)現(xiàn)下載指定模板的功能

這樣就將 downloadGitRepo 方法轉(zhuǎn)換為Promise方法了,接下來就可以使用Promise方法來下載模板了。

下載指定模板的方法很簡(jiǎn)單,只需要調(diào)用 downloadGitRepo 方法,傳入兩個(gè)參數(shù),第一個(gè)參數(shù)是GitHub上的模板地址,第二個(gè)參數(shù)是下載到本地的路徑。

在官方的options介紹中有提供詳解:

實(shí)現(xiàn)下載指定模板的功能

我們這里采用的是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

實(shí)現(xiàn)下載指定模板的功能

可以看到已經(jīng)下載成功了,然后再去用戶目錄中查看:

實(shí)現(xiàn)下載指定模板的功能

實(shí)現(xiàn)下載指定模板的功能

實(shí)現(xiàn)下載指定模板的功能

可以看到已經(jīng)下載成功了,這樣就實(shí)現(xiàn)了下載指定模板的功能。

如果您覺得文章對(duì)您有所幫助,歡迎您點(diǎn)贊、評(píng)論、轉(zhuǎn)發(fā),也歡迎您關(guān)注我的公眾號(hào)『BNTang』,我會(huì)在公眾號(hào)中分享更多的技術(shù)文章。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(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)