CloudBase CLI 是一個開源的命令行界面交互工具,用于幫助用戶快速、方便的部署項目,管理云開發(fā)資源。有了這個工具,我們就能在電腦本地管理小程序云開發(fā)、Web端云開發(fā)創(chuàng)建的環(huán)境,對環(huán)境里的云函數、云存儲、云數據庫進行增刪改查等操作。
在本地電腦安裝好了Node環(huán)境之后,我們可以打開電腦終端(Windows電腦為cmd命令提示符,Mac電腦為終端Terminal),然后逐行輸入并按Enter執(zhí)行下面的代碼就可在電腦里安裝CloudBase Cli工具:
npm install -g @cloudbase/cli
cloudbase -v
-g
是全局安裝的意思,可能會出現權限不夠的提示,如果是Mac電腦可以在前面加一個sudo,而Windows可以通過管理員的方式打開cmd命令提示符。
安裝完成后,你可以使用 cloudbase -v
驗證是否安裝成功,如果輸出了版本號,則表明 CloudBase CLI 被成功安裝到您的計算機中。
要讓Cloudbase Cli工具登錄,首先我們打開騰訊云云開發(fā)控制臺,選擇微信公眾號的方式來登錄,掃描選擇你的小程序賬號,這樣就可以進入管理控制臺查看到你在開發(fā)者工具創(chuàng)建的云開發(fā)環(huán)境了。
在終端中輸入下面的命令,CLI 工具會自動打開云開發(fā)控制臺獲取授權,在控制臺的網頁上點擊同意授權按鈕允許 CloudBase CLI 獲取授權。登錄成功后,在終端就會有登錄成功的提示,并附帶一些操作的tips,這些操作的tips我們以后會用到。
cloudbase login
而要登出命令行工具CloudBase CLI的賬號則可以使用 cloudbase logout
。
Cloudbase CLI 還有一種獲取授權并登陸的方式,就是使用騰訊云的API 密鑰授權。首先到騰訊云官網獲取云 API 密鑰新建密鑰,然后輸入以下命令并按提示輸入密鑰的 SecretId 和 SecretKey 就可以完成登錄:
cloudbase login --key
通過這種方式可以操作名下的所有騰訊云資源,因此注意要妥善保存和定期更換密鑰,舊秘鑰要及時刪除。這種方式主要用于環(huán)境的批量管理。
幾乎所有的命令行工具,都支持--help
的方式輸出幫助信息來查看命令行主要支持哪些命令,這樣我們就沒有必要死記硬背命令了,直接通過這種方式來查看即可。
cloudbase --help
打印之后我們就可以看到CloudBase Cli除了我們前面的查看版本、登錄騰訊云賬號、輸出幫助信息等命令外,還有很多命令并予以了一個簡單的注解,有了這些命令我們就能對CloudBase Cli工具有了一些非常全面的了解了。比如我們想查看我們的賬號下的環(huán)境信息,通過幫助信息了解到可以在終端輸入以下命令即可:
cloudbase env:list
要如何在本地電腦與云開發(fā)的環(huán)境建立聯系呢?就需要我們在電腦本地初始化環(huán)境。在電腦的C盤(Windows)或電腦的下載文件夾(Mac)里新建一個文件夾比如tcbweb,然后在終端里輸入以下命令進入到該目錄,
#Windows 電腦
cd /d C:\download\tcbweb
## Mac電腦
cd downloads/tcbweb
然后再在終端輸入以下命令來創(chuàng)建項目:
cloudbase init
這時會需要選擇環(huán)境、輸入項目名稱、開發(fā)語言、云開發(fā)模板,我們可以通過鍵盤的上下鍵來選擇,開發(fā)語言要選擇Nodejs(云開發(fā)也支持PHP、Java),模板可以選擇Hello World(也可以視情需求選擇其他模板),確認之后項目就可以創(chuàng)建好了。
使用 cloudbase init 初始化項目時, CloudBase CLI 根據你輸入的項目名稱創(chuàng)建一個文件夾,并寫入相關的配置和模板文件,創(chuàng)建的項目文件結構如下所示:
.
├── _gitignore
├── functions // 云函數目錄
│ └── app
│ └── index.js
└── cloudbaserc.js // 項目配置文件
所有 CloudBase CLI 命令均在配置文件cloudbaserc.js所在目錄執(zhí)行,也就是說要在終端運行Cloudbase CLI命令,需要先進入cloudbaserc.js所在的目錄,cloudbaserc.js在哪里,哪里就是這個項目的根目錄。建議編輯代碼時使用編輯器比如 Visual Studio Code或IDE工具Webstrom之類的,打開創(chuàng)建好的項目文件夾tcbweb,這樣方便運行、調試、編輯。
云開發(fā)項目是和云開發(fā)環(huán)境資源關聯的實體,云開發(fā)項目聚合了云函數、數據庫、文件存儲等服務,您可以在云開發(fā)項目中編寫函數,存儲文件,并通過 CloudBase CLI 工具 快速的操作您的云函數、文件存儲、數據庫等資源。
配置文件可以簡化 CloudBase CLI 使用,方便項目開發(fā),當使用命令參數缺省時,CloudBase CLI 會從配置文件中解析相關參數并使用,方便開發(fā)者以更簡單的方式使用 CloudBase CLI。
默認情況下,使用 cloudbase init 初始化項目時,會生成 cloudbaserc.js 或 cloudbaserc.json 文件作為配置文件,你也可以使用 --config-file 指定其他文件作為配置文件,文件必須滿足格式要求。
{
"envId": "dev-xxxx", // 關聯環(huán)境 ID
"functionRoot": "functions", // 云函數文件夾名稱,相對路徑,可以省略 './
"functions": [ // 云函數配置
{
"name": "app", // functions 文件夾下函數文件夾的名稱,即函數名
"config": { // 云函數配置
"timeout": 5, // 超時時間,單位:秒 S
"envVariables": { // 環(huán)境變量
"key": "value"
}
}
}
]
}
在 CLI 配置文件cloudbaserc.js中,functions是一個數組,可以包含多個函數配置項,函數配置項包含了函數名稱(name),函數運行配置(config),函數調用傳入參數(params)等多項與函數相關的信息,影響著函數操作的行為表現,更多具體的配置比如私有網絡、觸發(fā)器等可以去參考相關技術文檔。
{
envId: 'dev-xxxx', // 關聯環(huán)境 ID
functions: [ // 函數配置
{
name: 'app', // functions 文件夾下函數文件夾的名稱,即函數名
config: { // 函數配置
timeout: 5, // 超時時間,單位:秒 S
envVariables: {
key: 'value' // 環(huán)境變量
},
// 私有網絡配置,如果不使用私有網絡,可不配置
vpc: {
// vpc id
vpcId: 'vpc-xxx',
// 子網 id
subnetId: 'subnet-xxx'
},
runtime: 'Nodejs10.15',// 運行時,目前可選運行包含:Nodejs8.9, Nodejs10.15,Php7, Java8等,默認為Nodejs 10.15
installDependency: true // 是否云端安裝依賴,僅支持 Node.js 項目
},
triggers: [ // 函數觸發(fā)器
{
name: 'myTrigger', // name: 觸發(fā)器的名字
type: 'timer', // type: 觸發(fā)器類型,目前僅支持 timer (即定時觸發(fā)器)
config: '0 0 2 1 * * *' // config: 觸發(fā)器配置,在定時觸發(fā)器下,config 格式為 cron 表達式
}
],
handler: 'index.main',
params: {}, // functions:invoke 本地觸發(fā)云函數時的調用參數
ignore: [ // 部署/更新云函數時忽略的文件
'*.md', // 忽略 markdown 文件
'node_modules', // 忽略 node_modules 文件夾
'node_modules/**/*'
]
}
]
}
我們可以在終端輸入以下命令列出所有云函數(一次只會列出前20條)并查看云函數的基本信息:
cloudbase functions:list
如果你的函數較多,需要列出其他的函數,你可以通過下面的選項指定返回的數據長度以及數據的偏移量,有點類似于通過skip來翻頁了。
-l, --limit <limit> 返回數據長度,默認值為 20
-o, --offset <offset> 數據偏移量,默認值為 0
#返回前 10 個函數的信息
cloudbase functions:list -l 10
#返回第 3 - 22 個函數的信息(包含 3 和 22)
cloudbase functions:list -l 20 -o 2
如果想查看所有云函數的詳情、某個云函數的詳情或某個云函數的調用日志,可以在終端輸入以下命令來獲?。?/p>
## 查看具體某個云函數的詳情,比如云函數名為login
cloudbase functions:detail login
## 查看配置文件中的所有云函數的詳情,注意是配置文件cloudbaserc.js 中的云函數
cloudbase functions:detail
#查看云函數的調用日志,比如云函數名為login
cloudbase functions:log login
我們可以通過查看云函數的詳情了解到云函數的運行環(huán)境、網絡、觸發(fā)器、修改時間以及具體的代碼等等,這是讓我們可以在電腦本地了解一個云函數的部署情況的非常重要的命令了。
你可以在本地通過 Cloudbase CLI 直接觸發(fā)云函數,也就是直接調用在服務端的云函數,調用成功后,會直接返回和在云開發(fā)控制臺一樣的云函數調用日志。
## 比如觸發(fā)login函數
cloudbase functions:invoke login
## 觸發(fā)配置文件中的全部函數
cloudbase functions:invoke
如果我們想要修改我們在小程序云開發(fā)里創(chuàng)建的云函數,首先就需要下載云函數的代碼以及它的依賴,默認情況下,函數代碼會下載到 functionRoot 下(也就是項目根目錄下的functions文件夾里),以函數名稱作為存儲文件夾。
cloudbase functions:download login
當然,你也可以指定函數存放的文件夾地址,函數的所有代碼文件會直接下載到指定的文件夾中。這個就和微信開發(fā)者工具下載云函數是一樣的。
cloudbase functions:download login ./subfile
這里的./subfile
是指項目根目錄下的subfile文件夾,如果你要指定的時候,需要先創(chuàng)建這個文件夾,建議最好是直接默認下載到functionRoot下。
當我們修改完本地云函數的代碼之后就需要把本地云函數的代碼更新或部署上傳到服務端,更新代碼update只會更新函數的代碼以及執(zhí)行入口,不會修改函數的其他配置,比如下面是更新login云函數
cloudbase functions:code:update login
而使用部署代碼命令deploy 時,則會修改函數的代碼、配置以及觸發(fā)器等,比如下面命令部署上傳login云函數,在部署上傳云函數前建議將login云函數的配置寫在cloudbaserc.js里:
cloudbase functions:deploy login
如果我們不指定函數的名稱,Cloudbase CLI 會會更新或部署配置文件中的全部函數:
## 更新配置文件中所有函數的配置信息
cloudbase functions:config:update
## 部署配置文件中所有函數的配置信息
cloudbase functions:deploy
如果只是想更新配置文件中云函數的配置信息,可以使用以下命令,目前支持修改的函數配置包含超時時間 timeout、環(huán)境變量 envVariables、運行時 runtime,vpc網絡以及 installDependency 等選項。
## 更新 login 函數的配置
cloudbase functions:config:update login
## 更新配置文件中所有函數的配置信息
cloudbase functions:config:update
如果存在同名的云函數需要覆蓋,可以在命令后附加 --force 選項指定 Cloudbase CLI 覆蓋已存在的云函數。
cloudbase functions:deploy dev --force
Cloudbase CLI 支持在本地運行云函數,這個有點類似于微信開發(fā)者工具的本地調試云函數,運行云函數時默認以 index.main 作為函數執(zhí)行入口。在本地運行云函數既可以通過云函數的路徑運行,也可以通過函數名來運行。
注意,要運行云函數,Node的依賴wx-server-sdk(核心是服務端SDK @cloudbase/node-sdk)是必不可少的,本地運行云函數,就需要在本地安裝wx-server-sdk,在云端運行就要在云端安裝這個依賴,由于我們的云函數是從云端下載下來的,都已經帶有wx-server-sdk依賴了,所以不需要安裝,但是如果是自己創(chuàng)建的云函數就必須要了哦~
你可以使用 --path 選項指定函數入口文件的路徑,直接運行云函數,比如下面的命令是執(zhí)行l(wèi)ogin云函數
cloudbase functions:run --path ./functions/login
還可以使用 --name 選項指定需要運行的云函數,使用 --name 選項時,可以通過 cloudbaserc.js 配置文件執(zhí)行函數執(zhí)行入口
cloudbase functions:run --name login
您可以通過下面的命令來刪除指定云函數和配置文件中的所有云函數。
#刪除 login 函數
cloudbase functions:delete login
#刪除配置文件中的所有的函數
cloudbase functions:delete
云存儲是云開發(fā)為用戶提供的文件存儲能力,用戶可以通過云開發(fā)提供的 CLI 工具、SDK 對存儲進行操作,如上傳、下載文件。這里需要先了解一下localPath和cloudPath的概念。
Windows 系統(tǒng)中l(wèi)ocalPath為本地路徑形式,是系統(tǒng)可以識別的路徑,通常使用\
分隔符(Mac電腦用/
分隔符)。cloudPath 是云端文件路徑,均需要使用 / 分隔符。
我們可以使用下面的命令來下載文件或文件夾,需要下載文件夾時,需要指定 --dir 參數。
## 下載文件
cloudbase storage:download cloudPath localPath
## 下載文件夾
cloudbase storage:download cloudPath localPath --dir
比如下面這段命令會將云存儲根目錄下的cloudbase文件夾里的文件下載到本地項目根目錄下的download文件夾里(download文件夾需事先創(chuàng)建),只要我們弄清楚了cloudPath和localPath的寫法就能熟練使用這個命令了
cloudbase storage:download cloudbase ./download --dir
我們可以使用下面的命令將本地電腦的文件或文件夾上傳到云存儲,當 CLI 檢測到 localPath 為文件夾時,會自動上傳文件內的所有文件,如果重復上傳會覆蓋。
cloudbase storage:upload localPath cloudPath
當不傳入 cloudPath,文件會上傳到云端的根目錄下,同時文件夾的層次結構會被保留,比如下面的命令會把項目根目錄的download文件夾里的內容直接上傳到云存儲的根目錄里,download的子文件夾會成為云存儲的二級目錄。
cloudbase storage:upload ./download
與之相應的,如果你想刪除云存儲里的文件或文件夾,可以使用下面的命令,需要刪除文件夾時,需要指定 --dir 參數。
## 刪除文件
cloudbase storage:delete cloudPath
## 刪除文件夾
cloudbase storage:delete cloudPath --dir
在不打開云開發(fā)控制臺或網頁控制臺,我們也可以通過Cloudbase Cli工具了解云存儲里的文件夾或文件的信息,比如在終端里輸入以下命令可以列出云存儲里的文件夾里的所有文件信息,比如大小、修改時間、key、Etag等信息。
cloudbase storage:list cloudPath
比如我們可以直接使用以下命令打印云存儲根目錄里的所有文件(平時不要這么做,打印二級目錄里的文件即可),其中二級目錄里的文件會用路徑的方式顯示,比如cloudbase/logo.png表示是cloudbase文件夾下的logo.png圖片。
cloudbase storage:list
如果我們想通過瀏覽器打開云存儲里的文件,就需要獲取文件臨時訪問鏈接。我們知道如果公有讀的文件獲取的鏈接不會過期,私有的文件獲取的鏈接只有十分鐘有效期。注意這里的cloudPath不能是文件夾,只能是文件哦
cloudbase storage:url cloudPath
比如我們想獲取云存儲cloudbase里的logo.png的臨時訪問鏈接,只需要在終端里輸入以下命令:
cloudbase storage:url cloudbase/logo.png
我們還可以使用下面的命令獲取文件的簡單信息:
cloudbase storage:detail cloudPath
更多建議: