Salesforce アプリ開発の tips
はじめに
全く知見がなくSalesforce アプリって何?って状態で始めた。
実際開発してみての困ったことや tips を共有してみる
※SFDX を用いての開発です
lwc コンポーネントで typescript 使えない
JSDocのアノテーションによる型定義/型指定を使うしかないが、複雑なロジックが必要な場合は、やっぱり typescript で書きたい
参考: https://developer.salesforce.com/jpblogs/2022/10/how-to-use-typescript-with-salesforce-part-2-jp/
解決策
typescript をトランスパイルして生成した js を lwc で import するようにした
- lwc のコンポーネント配下に .ts ファイルを配置して
tsc
を実行 - 生成されたファイルを import
import 方法については、こちら を参照
Lightning アプリケーションビルダー の初期ヘッダーが消せない
解決策
css で消した😇
参考: https://salesforce.stackexchange.com/questions/260858/hide-standard-page-header-in-custom-lightning-app-page
css は force-app/main/default/staticresorces
に配置
参考: https://developer.salesforce.com/docs/atlas.ja-jp.api_meta.meta/api_meta/meta_staticresource.htm
.slds-page-header.header.flexipageHeader {
display: none;
}
<?xml version="1.0" encoding="UTF-8"?>
<StaticResource xmlns="http://soap.sforce.com/2006/04/metadata">
<cacheControl>Public</cacheControl>
<contentType>text/css</contentType>
</StaticResource>
Lightning Web コンポーネントのエラー処理が辛い
Apex のエラーやロジックのエラーなど色々なエラーをハンドリング頑張るのは辛い
解決策
reduceErrors をそのまま使うようにした
参考: https://developer.salesforce.com/jpblogs/2020/09/error-handling-best-practices-for-lwc/
Apex のテストカバレッジを知りたい
テスト実行後に以下を実行
解決策
sfdx force:apex:test:report --testrunid <Test Run Id> --codecoverage --resultformat human
# ex. sfdx force:apex:test:report --testrunid 707Ig00000REz6t --codecoverage --resultformat human
パッケージのアップグレード時のマイグレーション処理はどうやる?
パッケージをアップグレードする際にレコードを更新したい
解決策
インストール後スクリプトを使用した
config/project-scratch-def.json
{
...
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "package_name",
"postInstallScript": "PostInstallScript"
}
],
}
classes/PostInstallScript.cls
public class PostInstallScript implements InstallHandler {
private Version previousVersion;
public void onInstall(InstallContext context) {
if (context.previousVersion() == null) {
// 初回インストール時の処理
} else {
// アップグレード時の処理
}
}
private Boolean isInstalledVersionBefore(Version version) {
return previousVersion.compareTo(version) < 0;
}
}
最後に
他にも困ったことは多々ありましたが、web アプリの開発のノリで開発するとすごく大変でした...
Discussion