Salesforce DX
Salesforce DX (Salesforce Developer Experience) 是 Salesforce 推出的一個新的開發(fā)和部署模式床三,旨在提供更好的開發(fā)者體驗女仰。在 Salesforce 官網(wǎng)和 Trailhead 網(wǎng)站中都可以找到很多相關的介紹和教程。目前 Salesforce DX 的某些文檔還處于 Beta 階段。
本文將簡單介紹其優(yōu)點和開發(fā)流程帜乞。
Salesforce DX 的優(yōu)點
Salesforce DX(下面簡稱SFDX)有兩個主要優(yōu)點:
- SFDX 符合快速迭代的開發(fā)模式
- SFDX 提供了統(tǒng)一的命令行工具在代碼庫和服務器之間進行通信和同步
SFDX 對快速迭代的支持
在 Salesforce DX(下面簡稱SFDX)出現(xiàn)之前,開發(fā)者主要是通過部署不同類型的沙盒進行開發(fā)狂鞋,如圖所示:
圖片取材于官方文檔躏结。
這種結(jié)構(gòu)的缺陷在于沙盒環(huán)境的搭建菇存。
在多個功能同時進行開發(fā)的情況下夸研,需要同時擁有多個開發(fā)的沙盒,即上圖的“Developer Sandbox”依鸥。這些沙盒沒法同時擁有所有已經(jīng)開發(fā)的功能亥至。隨著項目的發(fā)展,越來越多的沙盒會因為沒有特定的功能而“過時”毕籽,這就需要創(chuàng)建新的沙盒或刷新已有的沙盒抬闯。而這些操作需要耗費大量的時間井辆,對于敏捷開發(fā)和快速迭代造成影響关筒。
為了改進這種缺陷,SFDX 提供了一種新的概念:Scratch org杯缺。Scratch org 是一種可以快速搭建的“沙盒”蒸播,只包含了特定的功能。開發(fā)者可以通過 SFDX 中的設置快速創(chuàng)建 Scratch org萍肆,在上面開發(fā)新的功能袍榆,然后將所做的更改直接提取出來放到代碼庫中進行整合。
通過這樣一種流程塘揣,之前笨重的“開發(fā)沙盒”就被輕盈的 Scratch org 所取代包雀,為快速迭代和持續(xù)集成提供了更好的支持。
Salesforce 命令行工具
Salesforce 隨著 SFDX 一起推出了命令行工具(下面簡稱 CLI)亲铡。在此之前才写,開發(fā)者一般使用官方的 Force.com IDE 或其他第三方插件(比如 MavensMate)來進行本地代碼和服務器之間的通信。CLI 作為整合這些功能的工具而出現(xiàn)奖蔓。它可以和各種代碼編輯器結(jié)合使用赞草,包含了在開發(fā)中需要的各種操作和命令,讓開發(fā)者可以更方便的將本地修改上傳到各種 Scratch org 中或者將 Scratch org 中的修改同步到本地代碼庫吆鹤。
SFDX 開發(fā)過程示例
下面通過一些簡單的例子來說明 SFDX 的工作流程厨疙。
前提條件
在使用 SFDX 開發(fā)之前,需要先完成以下幾個部分:
- 擁有一個 Salesforce 環(huán)境來作為基礎(在 SFDX 中被稱為“Dev Hub”)疑务。Scratch org 就會基于它來建立
- 在第一步中的 Salesforce 環(huán)境中啟用“Dev Hub”功能沾凄。可以通過設置界面搜索“Dev Hub”來啟用
- 安裝 Salesforce CLI 工具
登錄“Dev Hub”環(huán)境
在進行開發(fā)之前知允,先要登錄 Dev Hub 環(huán)境撒蟀。
打開命令行,輸入命令:
sfdx force:auth:web:login -d -a ExampleDevHub
在此命令之后廊镜,系統(tǒng)會自動打開瀏覽器牙肝,顯示 Salesforce 的登錄頁面。在此頁面中像平時一樣登錄要作為“Dev Hub”的 Salesforce 環(huán)境即可。在登錄之后配椭,這個“Dev Hub”就被作為接下來創(chuàng)建 Scratch org 的基礎虫溜,記錄在系統(tǒng)中。
命令講解:
- “sfdx force:auth:web:login”部分是基礎命令股缸,用來登錄
- “-d”參數(shù)是設定接下來登錄的“Dev Hub”是默認的衡楞。系統(tǒng)中可以同時擁有多個“Dev Hub”。要注意的是敦姻,當創(chuàng)建了 Scratch org 后瘾境,這條命令也可以用來登錄 Scratch org。在這時镰惦,不要使用“-d”參數(shù)
- “-a”參數(shù)是為這個“Dev Hub”設定一個好記的別名迷守。在這里我們使用“ExampleDevHub”
在命令行中輸入命令:
sfdx force:org:open -u ExampleDevHub
即可打開瀏覽器直接進入剛才建立的以“ExampleDevHub”為別名的“Dev Hub”環(huán)境
當創(chuàng)建了 Scratch org 后,這條命令也可以用來打開瀏覽器直接進入 Scratch org旺入。
建立 SFDX 項目
在使用 SFDX 之前兑凿,需要先建立一個項目。
在命令行中使用以下命令建立一個名為“ExampleProj”的項目:
sfdx force:project:create -n ExampleProj
該命令會建立以下目錄結(jié)構(gòu):
其中茵瘾,“sfdx-project.json”文件包含了該項目的基本信息礼华,“config”文件夾下的“project-scratch-def.json”文件包含了建立 Scratch org 的基本配置信息,“force-app”目錄則用來存放代碼拗秘。
建立 Scratch org
使用命令行進入 SFDX 項目的目錄圣絮,然后輸入以下命令即可建立一個 Scratch org:
sfdx force:org:create -s -f config/project-scratch-def.json -a ExampleScratchOrg
命令解釋:
- “-s”參數(shù)把即將建立的 Scratch org 作為該項目默認的 Scratch org
- “-f”參數(shù)聲明了即將建立的 Scratch org 是基于哪一個配置文件
- “-a”參數(shù)是設定別名
接下來使用命令:
sfdx force:org:open -u ExampleScratchOrg
即可打開瀏覽器直接進入剛才建立的以“ExampleScratchOrg”為別名的 Scratch org。
使用命令:
sfdx force:org:list
可以查看當前系統(tǒng)中已經(jīng)記錄的“Dev Hub”環(huán)境和已經(jīng)建立的 Scratch org 列表雕旨。
使用 Scratch org
在 Scratch org 中扮匠,開發(fā)者(或管理員)可以和使用真正的 Salesforce 環(huán)境一樣開發(fā)或配置功能。于此同時奸腺,Salesforce CLI 工具也提供了一系列的命令來進行相關的操作餐禁,比如建立 Apex 類、建立 Lightning 組件等突照。
代碼庫與 Scratch org 同步
SFDX 的一個重要功能就是將代碼庫與 Scratch org 同步帮非。Salesforce CLI 提供了兩個重要的命令來實現(xiàn)這些操作:
- sfdx force:source:pull
- sfdx force:source:push
將更改從 Scratch org 同步到本地代碼庫
開發(fā)者可以登錄 Scratch org 進行開發(fā)和配置。當完成開發(fā)后讹蘑,可以在 SFDX 中使用命令“sfdx force:source:pull”來將更改同步到本地的代碼庫末盔。
比如:在上面建立的 Scratch org 中建立一個新的自定義對象“地址”,API 名字叫“Address__c”座慰。
要將此更改同步到本地代碼庫陨舱,可以在命令行中運行:
sfdx force:source:pull
運行的結(jié)果如圖:
可以看到,剛才建立的新的自定義對象版仔,包括隨之生成的頁面布局游盲,以及相關的簡檔設置都以元數(shù)據(jù)的形式保存到了“force-app”文件夾中误墓。
接下來開發(fā)者可以將此更改拷貝到 Git 或其他代碼庫中進行提交。
將更改從本地代碼庫同步到 Scratch org
在本地代碼庫中益缎,也可以新建一些組件谜慌,比如 Apex 類或 Lightning 組件等,然后通過命令“sfdx force:source:push”將其同步到 Scratch org 中莺奔。
比如:在之前建立的 Scratch org 中并沒有任何 Apex 類欣范,我們在命令行中運行:
sfdx force:apex:class:create -n AccountController -d force-app/main/default/classes
這條命令就在本地代碼庫的文件夾“force-app/main/default/classes”下面建立了一個名叫“AccountController”的 Apex 類。
然后在命令行中運行:
sfdx force:source:push
運行的結(jié)果如圖:
接下來令哟,我們登錄 Scratch org恼琼,進入 Developer Console,可以看到剛才建立的 Apex 類“AccountController”已經(jīng)被同步過來了屏富。