The Graph command line interface.
As of today, the command line interface consists of two commands:
graph codegen
— generates TypeScript code for smart contract ABIs used in subgraphs.graph build
— compiles subgraphs to WebAssembly and deploys them to IPFS.
graph
takes a subgraph.yaml
subgraph manifest with
- references to a GraphQL schema,
- smart contract ABIs, and
- mappings written in TypeScript/AssemblyScript,
compiles the mappings to WebAssembly and deploys a ready-to-use version of the subgraph to IPFS or a local directory for debugging.
Subgraphs for The Graph are set up just like any regular TypeScript
project. It is recommended to install graph-cli
as a local dependency
via package.json
and use npm
scripts for code generation and
building.
An example of this can be found in the Decentraland repository.
- Create a project for the subgraph with a
package.json
etc. - Add a
subgraph.yaml
subgraph manifest with a GraphQL schema etc. - Add
@graphprotocol/graph-cli
as a local dependency with one ofnpm install --save-dev @graphprotocol/graph-cli # NPM yarn add --dev @graphprotocol/graph-cli # Yarn
- Add the following
tsconfig.json
:{ "extends": "./node_modules/@graphprotocol/graph-cli/tsconfig.json", "compilerOptions": { "types": ["@graphprotocol/graph-cli"] } }
- Add the following to
package.json
:Note: Replace the IPFS address with any IPFS node you want to deploy the subgraph to.{ "scripts": { "codegen": "graph generate-types subgraph.yaml", "build": "graph build subgraph.yaml", "build-ipfs": "graph build --ipfs /ip4/127.0.0.1/tcp/5001 subgraph.yaml" } }
- Generate type definitions for contract ABIs used in the subgraph
with:
yarn codegen
- Develop your
mapping.ts
against these generated types. - Build the subgraph with one of
yarn build # Will drop the results in dist/ yarn build-ipfs # Will also deploy to IPFS and output an IPFS hash
Copyright © 2018 Graph Protocol, Inc. and contributors.
The Graph CLI is dual-licensed under the MIT license and the Apache License, Version 2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.