云開發(fā) 嘗試使用 CLI 來開發(fā)項目

2020-07-22 15:34 更新

在前面篇章我們使用控制臺編寫代碼、管理我們的內(nèi)容。從這一節(jié)開始使用「命令行工具 CLI」 來進(jìn)行開發(fā)。
首先我們需要安裝 CLI 工具。

安裝云開發(fā) CLI 之前需要安裝 Node.js。如果本機(jī)沒有安裝 Node.js,請從 Node.js 官網(wǎng)下載二進(jìn)制文件直接安裝,建議選擇 LTS 版本,版本必須為 8.6.0+。

安裝

可以使用 npm 來安裝,在命令行輸入如下命令:

npm i -g @cloudbase/cli           

如果遇到提示權(quán)限不足的情況,請加 sudo 命令,如下:

sudo npm i -g @cloudbase/cli           

如果提示輸入密碼,請輸入本機(jī)的當(dāng)前用戶的開機(jī)密碼。

測試是否安裝成功,可以使用 -v 命令,如下:

cloudbase -v        

如果正確返回版本號,代表安裝成功。

這時候你發(fā)現(xiàn) cloudbase 這么從長,足足 9 個字母,難拼寫難記憶;其實可以使用 tcb 代替 cloudbase,比如:

tcb -v        

CLI、控制臺什么關(guān)系

可以這么理解,控制臺是一個平臺,可以在上面使用 Web IDE(cloud studio) 編寫代碼,也可以管理各種配置,例如安全域名、獨立域名設(shè)置、文件管理等等。但是有一些操作其實可以放到命令行的,比如靜態(tài)網(wǎng)站部署是不是可以一行命令,就可以將文件上傳上去。因此:

  • CLI 提供一些簡單的命令用于開發(fā)工具調(diào)度,例如在 Vuepress package.json 中集成 hosting(靜態(tài)網(wǎng)站托管)的命令;
  • 控制臺包含了更多配置信息、資源信息,一般屬于低頻操作;更多的是操作層面;
  • 無論是控制臺,還是 CLI , 第一件是登錄,否則無法管理自己的資源,這個很好理解的。

部署靜態(tài)網(wǎng)站

靜態(tài)網(wǎng)站部署怎么玩 中提到可以通過控制臺部署靜態(tài)文件。其實,CLI 也支持部署命令。舉個例子????,Vuepress 生成 dist 的目錄下面的文件都可以部署到靜態(tài)網(wǎng)站托管上面。我們可以在 Vuepress 項目的 package.json 中加一個命令:

{
  "scripts": {
    "dev": "vuepress dev docs",
    "build": "vuepress build docs",
    "deploy": "tcb hosting:deploy docs/.vuepress/dist/ -e 你的環(huán)境 ID"
  },
  "dependencies": {
    "vuepress": "*"
  }
}

首先執(zhí)行 login 命令,獲取鑒權(quán),這樣才能對環(huán)境和資源進(jìn)行操作:

tcb login    

然后可以執(zhí)行

tcb hosting:deploy docs/.vuepress/dist/ -e 你的環(huán)境 ID

如果按照上面對 package.json 進(jìn)行了配置,也可以執(zhí)行:

npm run deploy

之后就可以看到整個上傳的過程以及狀態(tài),比如當(dāng)前站點的部署效果如下:

LEEHUAWANG-MB0:vuepress wanglihua$ npm run deploy


> @ deploy /Users/wanglihua/code/cloud-developer/vuepress
> tcb hosting:deploy docs/.vuepress/dist/ -e 你的環(huán)境 ID


文件傳輸中 [=========================================] 100% 0.0s
? 
部署完成 ???? https://open-cloud-5d89b0-1300954686.tcloudbaseapp.com
? 文件共計 43 個
? 文件上傳成功 43 個
┌──────┬──────────────────────────────────┐
│ 狀態(tài)  │               文件               │
├──────┼──────────────────────────────────┤
│  ?   │             404.html             │
├──────┼──────────────────────────────────┤
│  ?   │            index.html            │
├──────┼──────────────────────────────────┤
│  ?   │          posts/01.html           │
├──────┼──────────────────────────────────┤
│  ?   │          posts/03.html           │
├──────┼──────────────────────────────────┤
│  ?   │          posts/04.html           │
├──────┼──────────────────────────────────┤
│  ?   │          posts/02.html           │
├──────┼──────────────────────────────────┤
│  ?   │  assets/img/search.83621669.svg  │
├──────┼──────────────────────────────────┤
│  ?   │ assets/css/0.styles.5eaf5755.css │
├──────┼──────────────────────────────────┤
│  ?   │     assets/js/10.97930671.js     │
├──────┼──────────────────────────────────┤
│  ?   │     assets/js/12.ae757b08.js     │
├──────┼──────────────────────────────────┤
│  ?   │    assets/js/app.840f7c0a.js     │
└──────┴──────────────────────────────────┘
? 文件上傳失敗 0 個

這里使用到的就是 tcb hosting:deploy 命令,第一個參數(shù)你的目錄地址,-e 后面跟上你的環(huán)境 ID。
當(dāng)然不僅可以用于 Vuepress,其實任何需要托管的頁面或者內(nèi)容都可以通過 tcb hosting:deploy 命令進(jìn)行操作。

tcb hosting 命令是一個集合,不止一個 deploy,還有刪除和查看文件列表等子命令,具體見 CLI-靜態(tài)托管

創(chuàng)建和部署云函數(shù)

一個命令搞定整個靜態(tài)網(wǎng)站的部署,當(dāng)然云函數(shù)也不在話下。

<span style="color:#1336EE;">第 0 步:tcb login</span>
同樣是登錄,只有登錄了才能獲取環(huán)境的操作權(quán)限,這個道理都懂的。

tcb login    

<span style="color:#1336EE;">第 1 步:tcb init</span>
選擇環(huán)境和初始化函數(shù)模板

tcb init

如下圖,按上下鍵選擇環(huán)境:

然后選擇語言和模板,這里選擇 Node.js 和云函數(shù)的簡單模板:

執(zhí)行完成的結(jié)果如下:

LEEHUAWANG-MB0:code wanglihua$ tcb init
? 選擇關(guān)聯(lián)環(huán)境 · serverless80 - [你的環(huán)境 ID]
? 請輸入項目名稱 · cloudbase-demo
? 選擇開發(fā)語言 · Node
? 選擇云開發(fā)模板 · Hello World
? 已存在同名文件夾:cloudbase-demo,是否覆蓋? (y/N) · true
? 創(chuàng)建項目 cloudbase-demo 成功!


???? 執(zhí)行命令 cd cloudbase-demo 進(jìn)入項目文件夾!
???? 執(zhí)行命令 cloudbase functions:deploy app 部署云函數(shù)

創(chuàng)建的項目目錄如下圖:

整個目錄中最核心的文件是 cloudbaserc.js,該文件中是整個項目的配置。比如:

  • envId: 通過 envId 指明了是哪個環(huán)境,一個開發(fā)者有多個環(huán)境,代碼要準(zhǔn)確上傳到指定環(huán)境;
  • functionRoot: 云函數(shù)存放的目錄,這樣可以一個命令部署所有的函數(shù);
  • functions: 一個函數(shù)的數(shù)組,指明每個函數(shù)的配置,因為每個函數(shù)的配置可能不一樣;該配置在上傳時會覆蓋控制臺的函數(shù)設(shè)置。

例如在 functions 目錄下有 app 目錄,即函數(shù)的名稱為 app,其配置信息為:

  • 超時時間 5 秒,最長可以設(shè)置 60 秒;
  • 在 Node.js v10.15 環(huán)境中執(zhí)行該函數(shù);
  • 內(nèi)存占用 128 MB,目前最小占用內(nèi)存為 128 MB;

<span style="color:#1336EE;">第 2 步:tcb functions:deploy</span>
我們按照剛才創(chuàng)建項目完成的命令行提示進(jìn)行執(zhí)行:

cd cloudbase-demo
tcb functions:deploy app

命令行執(zhí)行結(jié)果如下,并且可以根據(jù)提示查看函數(shù)列表或者創(chuàng)建 HTTP 觸發(fā):

<span style="color:#1336EE;">第 3 步:tcb functions:list</span>
查看函數(shù)是否部署完成及其狀態(tài),如下圖:

更多可參見 CLI-云函數(shù)命令。

附錄

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號