salesforce cli(開発メモ)

[コマンドリファレンス](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference.htm)

開発に使用する主なCLIコマンドの一覧

####ログイン
コマンドを実行するとブラウザが開くので、IDとパスワードで対象組織にログインする。

```
sfdx force:auth:web:login -r loginurl -d -a aliasname
 -d この組織をデフォルトの Dev Hub とする （省略可）
 -r ログイン先のURL（省略すると login.salesforce.com）
 -a エイリアスを指定

コマンド例：
//DX開発でDevHub組織にログインする
sfdx force:auth:web:login -d -a DevHub

//通常のsandboxにログインする
sfdx force:auth:web:login -r https://test.salesforce.com -a sand1
```

####登録済みの組織を表示
```
sfdx force:org:display
```

####Salesforce組織をブラウザ上で開く
エイリアス名を指定した組織をブラウザ上で開く。再ログインは不要。

```
sfdx force:org:open -u alias
  -a エイリアスを指定

コマンド例：
sfdx force:org:open -u sand1 
```

####DXプロジェクトの作成
開発用のプロジェクトを作成する。

```
sfdx force:project:create -n projectname
 -n プロジェクト名（この名前でフォルダが作成される） 

コマンド例：
sfdx force:project:create -n sampleProj
```
コマンドが実行されると、ローカル環境に下記のようなフォルダが作成される。
<img width="218" alt="Screen Shot 2019-01-30 at 21.12.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/161463/6c498faa-3663-c15c-102e-d908098c88eb.png">

####Scratch組織以外へのコードの取得とリリース
git形式のpush/pullコマンドはScratch組織に対してのみ使用可能。通常のsandboxやDeveloper組織に対してコードを取得したりリリースするには deploy/retrieve コマンドを使用する。

#####コードの受信

```
sfdx force:source:retrieve -m metadata -u aliasname
  -m メタデータ名
  -a エイリアスを指定
sfdx force:source:retrieve -p folder -u aliasname
  -p フォルダパス または ファイル名
  -a エイリアスを指定

コマンド例：
// package.xml
sfdx force:source:retrieve -x ./manifest/package.xml -u sand1

//Layout
sfdx force:source:retrieve -m Layout -u sand1
//Apexクラス
sfdx force:source:retrieve -m ApexClass -u sand1
//Lightning Auraコンポーネント
sfdx force:source:retrieve -m AuraDefinitionBundle -u sand1
//Lightning Webコンポーネント
sfdx force:source:retrieve -m LightningComponentBundle -u san1
// CustomObject
sfdx force:source:retrieve -m CustomObject -u sand1
// standard Object
sfdx force:source:retrieve -m CustomObject:Account -u sand1

// flow
sfdx force:source:retrieve -m Flow:yourflowName -u sand1
// workflowrule - get object unit workflow
sfdx force:source:retrieve -m workflow -u sand1

// VisualForce Page
sfdx force:source:retrieve -m ApexPage -u sand1
```

#####コードの送信

```
sfdx force:source:deploy -m metadata -u aliasname
  -m メタデータ名
  -a エイリアスを指定
sfdx force:source:deploy -p folder -u aliasname
  -p フォルダパス または ファイル名
  -a エイリアスを指定

コマンド例：
//flow 
sfdx force:source:deploy -m Flow:yourflowName -u sand1

//Lightning Auraコンポーネント
sfdx force:source:deploy -m AuraDefinitionBundle -u sand1
//Lightning Webコンポーネント
sfdx force:source:deploy -m LightningComponentBundle -u san1
//フォルダ指定
sfdx force:source:deploy -p force-app/main/default/aura -u sand1
//object release
sfdx force:source:deploy -p ./force-app/main/default/objects/xxxx -u sand1
or
sfdx force:source:deploy -p ./force-app/main/default/objects/xxxx/xxx.object-meta.xml -u sand1

//object field release
sfdx force:source:deploy -p ./force-app/main/default/objects/xxxx/fields/yyy.field-meta.xml -u sand1
// delete object field
sfdx force:source:delete -p  ./force-app/main/default/objects/xxxx/fields/yyy.field-meta.xml -u sand1 -r
※－r　No confirm prompt

```

####Apexクラスの作成

```
sfdx force:apex:class:create -n classname -d folderpath
 -n Apexクラス名
 -d 配置パス（通常はmain/default/classesを指定）

sfdx force:apex:class:create -n MyClass -d force-app/main/default/classes
```
####Lightning Auraコンポーネントの作成

```
sfdx force:lightning:component:create -n componentname -d folderpath 
sfdx force:lightning:event:create -n componentname -d folderpath 
  -n コンポーネント名
  -d ファイルを作成するパス（通常はmain/default/auraを指定）

コマンド例：
//コンポーネント作成
sfdx force:lightning:component:create -n lc_sampleComponent -d force-app/main/default/aura
//イベント作成
sfdx force:lightning:event:create -n lc_event -d force-app/main/default/aura 
```

####Lightning Webコンポーネントの作成

```

sfdx force:lightning:component:create --type lwc -n componentname -d folderpath
  -n コンポーネント名
  -d ファイルを作成するパス（通常はmain/default/lwcを指定）

コマンド例：
sfdx force:lightning:component:create --type lwc -n lwc_sampleComponent -d force-app/main/default/lwc
```

####リソースの削除
Lightning Webコンポーネントはこの方法以外では削除できない(2019/1月現在）

```
sfdx force:source:delete -p filename -u DevHub
  -p 削除したいフォルダパス または ファイル名
  -a エイリアスを指定

コマンド例：
sfdx force:source:delete -p force-app/main/default/lwc/LWC_Sample -u sand1
```