aboutsummaryrefslogtreecommitdiffstats
path: root/packages/deployer/README.md
blob: 9abcfa6fe1fe0b7213fa805cf600e9daa9e3f139 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
## @0xproject/deployer

This repository contains a CLI tool that facilitates compiling and deployment of smart contracts.

## Installation

```bash
yarn add @0xproject/deployer
```

## Usage

### CLI Usage

```bash
node ./node_modules/@0xproject/deployer/lib/cli.js --help
cli.js [command]

Commands:
  cli.js compile  compile contracts
  cli.js deploy   deploy a single contract with provided arguments

Options:
  --version          Show version number                               [boolean]
  --contracts-dir    path of contracts directory to compile
              [string] [default: "/Users/leonidlogvinov/Dev/0x/contracts"]
  --network-id       mainnet=1, kovan=42, testrpc=50      [number] [default: 50]
  --should-optimize  enable optimizer                 [boolean] [default: false]
  --artifacts-dir    path to write contracts artifacts to
       [string] [default: "/Users/leonidlogvinov/Dev/0x/build/artifacts/"]
  --jsonrpc-port     port connected to JSON RPC         [number] [default: 8545]
  --gas-price        gasPrice to be used for transactions
                                                [string] [default: "2000000000"]
  --account          account to use for deploying contracts             [string]
  --help             Show help                                         [boolean]
```

### API Usage

## Migrations

You might want to write a migration scripts (similar to `truffle migrate`), that deploys multiple contracts and configures them. Below you'll find a simple example of such a script to help you get started.

```typescript
import { Deployer } from '@0xproject/deployer';
import * as path from 'path';

const deployerOpts = {
    artifactsDir: path.resolve('src', 'artifacts'),
    jsonrpcUrl: 'http://localhost:8545',
    networkId: 50,
    defaults: {
        gas: 1000000,
    },
};

const deployer = new Deployer(deployerOpts);

(async () => {
    const etherToken = await deployer.deployAndSaveAsync('WETH9');
})().catch(console.log);
```

A more sophisticated example can be found [here](https://github.com/0xProject/0x-monorepo/tree/development/packages/contracts/migrations)

## Contributing

We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository.

Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.

### Install Dependencies

If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:

```bash
yarn config set workspaces-experimental true
```

Then install dependencies

```bash
yarn install
```

### Build

```bash
yarn build
```

or

```bash
yarn build:watch
```

### Lint

```bash
yarn lint
```

### Run Tests

```bash
yarn test
```