VSCodeでunlockedPackageソースをローカルにダウンロード

TrailheadのPlaygroundの組織から、ソースをローカルにダウンロードしたい時、基本は「SFDX: retrieve source in Mainifest from Org」を利用して問題はないが、インストールされたunlockedPackageのソースコードもローカルにダウンロードしたいなら、上記のコマンドだけで取得できない。

```sfdx force:source:retrieve -n PackageName```でソースコードがローカルにダウンロードできるが、
それは「force-app\main\default」の配下にPackageNameフォルダが作成され、そのフォルダにソースコードがダウンロードされます。
それだと、自分のカスタムソースとパッケージのソースが分かれている。両方のソースコードが一つの箇所に統一したいですね。

unlockedPackageのソースコードをローカルにダウンロードする方法を一つ紹介する。
-

- VSCodeを起動し、以下のコマンドでプロジェクトを作成する。

```
SFDX: Create Project with Mainifest
```

- 以下のコマンドで対象組織への接続を行う。

```
SFDX: Authorize an Org
```

- package.xmlを選択し右クリックして、以下の選択肢をクリックする。<Br>
ただし、ダウンロードされたソースコードはunlockedPackageのソースコードが含まれない。

```
SFDX: retrieve source in Mainifest from Org
```

- package.xmlにunlockedPackageの情報が含まれないので、ダウンロードできていないから、<Br>
package.xmlにその情報を追加していればできるはずですが、その分の追記自体も難しいかと思います。<Br>
なので、unlockedPackageの元のpackage情報がどこかがあれば、それをそのまま利用できるかと思います。<Br>
以下のコマンドを実行し、unlockedPackageのソースコードのZIPがローカルにダウンロードできる。

```
sfdx force:mdapi:retrieve -s -r ./mdapipkg -u <username> -p <package name>
mdapipkg：ダウンロードされたZIPの格納フォルダ
username：省略可
package name：対象パッケージ名称
```

- ダウンロードされたZIPの中にpackage.xmlがあり、内容は以下のように。<Br>
そのファイルを名前を「package_LWCPackage.xml」などに変更して、ローカルのプロジェクトのmanifestフォルダに格納する。

```package.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>LWCPackage</fullName>
    <description>Lightning Web Components Specialist Package</description>
    <types>
        <members>BoatDataService</members>
        <members>BoatDataServiceTest</members>
        <members>GenerateData</members>
        <members>GenerateDataTests</members>
        <members>SimilarBoatsController</members>
        <members>SimilarBoatsControllerTest</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>SimilarBoatsComponent</members>
        <name>ApexComponent</name>
    </types>
    <types>
        <members>SimilarBoats</members>
        <name>ApexPage</name>
    </types>
    <types>
        <members>standard__LightningSales</members>
        <name>CustomApplication</name>
    </types>
    <types>
        <members>BoatReview__c.Boat__c</members>
        <members>BoatReview__c.Comment__c</members>
        <members>BoatReview__c.Rating__c</members>
        <members>Boat__c.BoatType__c</members>
        <members>Boat__c.Boat_Image__c</members>
        <members>Boat__c.Contact__c</members>
        <members>Boat__c.Description__c</members>
        <members>Boat__c.Geolocation__c</members>
        <members>Boat__c.Length__c</members>
        <members>Boat__c.Picture__c</members>
        <members>Boat__c.Price__c</members>
        <members>Boat__c.Year_Built__c</members>
        <name>CustomField</name>
    </types>
    <types>
        <members>Add_Review</members>
        <members>Details</members>
        <members>Full_Details</members>
        <members>Please_select_a_boat</members>
        <members>Reviews</members>
        <name>CustomLabel</name>
    </types>
    <types>
        <members>CustomLabels</members>
        <name>CustomLabels</name>
    </types>
    <types>
        <members>BoatReview__c</members>
        <members>BoatType__c</members>
        <members>Boat__c</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>BoatType__c</members>
        <members>Boat__c</members>
        <name>CustomTab</name>
    </types>
    <types>
        <members>Boat_Record_Page</members>
        <name>FlexiPage</name>
    </types>
    <types>
        <members>BoatReview__c-BoatReview Layout</members>
        <members>BoatType__c-Boat Type Layout</members>
        <members>Boat__c-Boat Layout</members>
        <name>Layout</name>
    </types>
    <types>
        <members>boatMap</members>
        <members>fiveStarRating</members>
        <name>LightningComponentBundle</name>
    </types>
    <types>
        <members>BoatType__c.All</members>
        <members>Boat__c.All</members>
        <name>ListView</name>
    </types>
    <types>
        <members>Houseboats</members>
        <members>PleasureBoats</members>
        <members>Sailboats</members>
        <members>boats</members>
        <members>fivestar</members>
        <name>StaticResource</name>
    </types>
    <types>
        <members>Boat__c.Similar_Boats</members>
        <name>WebLink</name>
    </types>
    <version>49.0</version>
</Package>
```

- 「package_LWCPackage.xml」を右クリックし、以下の選択肢をクリックする。<Br>
それでソースコードがローカルにダウンロードできました!!!

```
SFDX: retrieve source in Mainifest from Org
```