import * as React from 'react'; import { hydrate, render } from 'react-dom'; import * as Loadable from 'react-loadable'; import { context } from 'ts/context/compiler'; import { Base } from 'ts/components/Base'; import { Breakout } from 'ts/components/Breakout'; import { Code } from 'ts/components/Code'; import { Compiler as CompilerComponent } from 'ts/components/Compiler'; import { Content } from 'ts/components/Content'; import { ContentBlock } from 'ts/components/ContentBlock'; import { Hero } from 'ts/components/Hero'; import { InlineCode } from 'ts/components/InlineCode'; import { Lead } from 'ts/components/Typography'; const Animation = Loadable({ loader: () => System.import(/* webpackChunkName: 'compiler-animation' */ 'ts/components/Animations/Compiler'), loading: () =>
, delay: 1000, render(loadable: { Animation: any }): React.ReactNode { const Component = loadable.Animation; return ; }, }); const Compiler: React.StatelessComponent<{}> = () => ( npm install @0x/sol-compiler --g cd /your_project_dir && sol-compiler

Configure via a compiler.json file.

mkdir compiler.json

Example of settings:

{`{ "contractsDir": "contracts", "artifactsDir": "artifacts", "contracts": "*", "compilerSettings": { "optimizer": { "enabled": false }, "outputSelection": { "*": { "*": ["abi", "evm.bytecode.object"] } } } }`}
Sol compiler uses solidity standard JSON output format for the artifacts. This way, you can define which parts of the artifact you need.

Sol compiler uses solidity standard JSON output format for the artifacts. This way, you can define which parts of the artifact you need.

{`{ "compilerSettings": { "outputSelection": { "*": { "*": ["abi"] } } } }`} {`{ "compilerOutput": { "abi": [...], }, }`}

Sometimes you need to use some debuggers or other dev tools and you’ll need more info in the artifact.

{`{ "compilerSettings": { "outputSelection": { "*": { "*": [ "abi", "evm.bytecode.object", "evm.bytecode.sourceMap", "evm.deployedBytecode.object", "evm.deployedBytecode.sourceMap" ] } } } }`} {`{ "compilerOutput": { "abi": [...], "evm": { "bytecode": { "object": "0xdeadbeef", "sourceMap": "26:480:..." }, "deployedBytecode": { "object": "0xdeadbeef", "sourceMap": "26:480:0..." } } } "sources": { "Migrations.sol": { "id": 0 } }, }`}
); const root = document.getElementById('app'); if (root.hasChildNodes()) { hydrate(, root); } else { render(, root); }