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; returnnpm install @0x/sol-compiler --g
cd /your_project_dir && sol-compiler
Configure via a
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.
{`{
"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
}
},
}`}