Dependency Manager

[Previous << Development Tools](https://qiita.com/flowcadence/items/6930957249896c0ad5d0)
[Next >> Running Cadence Tests](https://qiita.com/flowcadence/items/cf23506a744373ed46ca)

https://qiita.com/abcdefgac153131/items/3073d69c6e9895e68b5a#flow-cli-と-fcl

Flow CLI のDependency Managerはは、プロジェクト外のスマートコントラクトを使用する際に開発プロセスを合理化するため、コアなコントラクトやその他エコシステムのコントラクトを使用する際に、コントラクトのコピー、貼り付け、更新といった手作業を排除していきます。

例えば、`FlowToken` スマートコントラクトを使用して新しいアプリケーションを構築したい場合、従来はネットワーク上でそのコントラクトを探し出し、それをローカルプロジェクトにコピーし、`flow.json` に追加する必要がありました。このプロセスは、`NonFungibleToken` スマートコントラクトのように、依存するインポート先（dependency）の数だけ繰り返す必要があります。Dependency Managerはは、いくつかの簡単なコマンドでこのプロセスを簡素化します。

<h1>install</h1>

`install`コマンドで、全ての依存関係、サブ依存関係を簡単にインストールできます。あなたは特定の依存関係をインストールしたり、`flow.json`にリストされている全依存関係をインストールしたりすることができます。

<h3>Installing Specific Dependencies</h3>

インストールしたいスマートコントラクトのアドレスと名称が分かっている場合（多くの場合、[Contract Browser](https://contractbrowser.com/)で検索できます）、次の構文を使用できます。
```
flow dependencies install testnet://7e60df042a9c0868.FlowToken
```
このコマンドにおいて、文字列 `testnet://7e60df042a9c0868.FlowToken` は `flow.json`内で`source`として使用されます。また、その内訳は以下です。

* Network: `testnet`
* Address: `7e60df042a9c0868`
* Contract Name: `FlowToken`

これは、ネットワーク上のコントラクトのリモートソースを指しており、それが真の情報の源として使用されます。


<h3>Installing Core Contracts Using Simplified Syntax</h3>

コアなコントラクトにおいては、Flow Mainnetをデフォルトとする簡略化された構文を使用できます。
```ruby
flow dependencies install FlowToken
```
このコマンドは、機能的には次のコマンドと同等です。
```
flow dependencies install mainnet://1654653399040a61.FlowToken
```

<h3>Installing Multiple Dependencies</h3>

複数の依存関係を一度にインストールすることもできます。例えば：
```ruby
flow dependencies install testnet://7e60df042a9c0868.FlowToken NonFungibleToken
```
このコマンドは、`FlowToken`コントラクト（テストネット）と`NonFungibleToken`コントラクト（メインネット）の両方をインストールします。
<h3>Installing Dependencies from flow.json</h3>

依存関係を指定せずに`install`コマンドを実行しますと、`flow.json`ファイルにリストされたすべての依存関係がインストールされ、それらが最新の状態であることが保証されます。
```ruby
flow dependencies install
```
このコマンドは、`flow.json`内で指定されたすべての依存関係をチェックし、インストールし、ネットワーク上で変更があった場合は更新します。

<h3>Example flow.json Entry</h3>

インストール後、あなたの`flow.json`ファイルは以下の表記を含むでしょう。
```ruby
{
    "dependencies": {
        "FlowToken": {
            "source": "testnet://7e60df042a9c0868.FlowToken",
            "aliases": {
                "emulator": "0ae53cb6e3f42a79"
            }
        }
    }
}
```
<h3>Other Things to Note</h3>

* インストール後、`imports`という名前のローカルフォルダが作成されます。このフォルダは依存関係をローカルに保存しますので、`.gitignore`に追加することをお勧めします。
* ネットワーク上のコントラクトが変更された場合、Dependency Managerは`imports`フォルダ内のローカル依存関係を更新するようにプロンプトを出します。dependencyオブジェクトに保存されているハッシュ値は、このチェックのために使用されるので、削除を避けてください。
* 依存関係はあなたのローカルコントラクトと同じ様に機能します。`flow.json`ファイル内の`deployments`にそれらを追加し、`flow project deploy`実行でデプロイすることが出来ます。また、スクリプト内、トランザクション内、コントラクト内にインポートすることもできます（例えば`import "FlowToken"`のように）。
* コアコントラクトのエイリアスは、あなたのために自動ですべてのネットワークに追加されます。

<h1>discover</h1>

`discover`コマンドは、あなたがプロジェクトのコアコントラクトを対話的に検索し、インストールするのに役立ちます。コアコントラクトは、Flow Foundationが管理する標準スマートコントラクトであり、Flowエコシステム全体で広く使用されています（コアコントラクトの詳細については[こちら](https://developers.flow.com/build/core-contracts)をご覧ください）。

`discover`コマンドを使用するには、以下を実行します。
```ruby
flow dependencies discover
```
インストール可能なコアコントラクトのリストが表示されます。
```ruby
Select any core contracts you would like to install or skip to continue.
Use arrow keys to navigate, space to select, enter to confirm or skip, q to quit:

> [ ] FlowEpoch
  [ ] FlowIDTableStaking
  [ ] FlowClusterQC
  [ ] FlowDKG
  [ ] FlowServiceAccount
  [ ] NodeVersionBeacon
  [ ] RandomBeaconHistory
  [ ] FlowStorageFees
  [ ] FlowFees
  [ ] FungibleTokenSwitchboard
  [ ] EVM
```
インストールしたいコントラクトを選択した後、`Enter`キーを押して確定します。選択したコントラクトは、`flow.json`ファイルに追加され、あなたのプロジェクト内でアクセスできるようになります。

*Last updated on **Nov 26, 2024** by **Chase Fleming***

翻訳元

https://developers.flow.com/tools/flow-cli/dependency-manager

***
<b>[Previous << Development Tools](https://qiita.com/flowcadence/items/6930957249896c0ad5d0)
</b>

[Flow blockchain / Cadence version1.0ドキュメント](https://qiita.com/flowcadence/items/3073d69c6e9895e68b5a) (Dependency Manager)

<b>[Next >> Running Cadence Tests](https://qiita.com/flowcadence/items/cf23506a744373ed46ca)</b>