2018-11-19 17:27:00 +01:00

171 lines
5.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: () => <div />,
delay: 1000,
render(loadable: { Animation: any }): React.ReactNode {
const Component = loadable.Animation;
return <Component />;
},
});
const Compiler: React.StatelessComponent<{}> = () => (
<Base context={context}>
<Hero>
<Animation />
</Hero>
<CompilerComponent />
<Content>
<ContentBlock main={true} title="Get started" />
<ContentBlock title="Install">
<Breakout>
<Code canCopy={true}>npm install @0x/sol-compiler --g</Code>
</Breakout>
</ContentBlock>
<ContentBlock title="Run">
<Breakout>
<Code>cd /your_project_dir && sol-compiler</Code>
</Breakout>
</ContentBlock>
<ContentBlock title="Configure">
<p>
Configure via a <InlineCode>compiler.json</InlineCode> file.
</p>
<Breakout>
<Code>mkdir compiler.json</Code>
</Breakout>
<p>Example of settings:</p>
<Breakout>
<Code language="json">
{`{
"contractsDir": "contracts",
"artifactsDir": "artifacts",
"contracts": "*",
"compilerSettings": {
"optimizer": { "enabled": false },
"outputSelection": {
"*": {
"*": ["abi", "evm.bytecode.object"]
}
}
}
}`}
</Code>
</Breakout>
</ContentBlock>
</Content>
<Content dark={true}>
<ContentBlock main={true} title="Artifacts">
<Lead>
Sol compiler uses solidity standard JSON output format for the artifacts. This way, you can define
which parts of the artifact you need.
</Lead>
</ContentBlock>
<ContentBlock title="Production">
<p>
Sol compiler uses solidity standard JSON output format for the artifacts. This way, you can define
which parts of the artifact you need.
</p>
<Breakout>
<Code isLight={true} language="json" isEtc={true}>
{`{
"compilerSettings": {
"outputSelection": {
"*": {
"*": ["abi"]
}
}
}
}`}
</Code>
</Breakout>
<Breakout>
<Code isLight={true} language="json" isEtc={true}>
{`{
"compilerOutput": {
"abi": [...],
},
}`}
</Code>
</Breakout>
</ContentBlock>
<ContentBlock title="Development">
<p>
Sometimes you need to use some debuggers or other dev tools and youll need more info in the
artifact.
</p>
<Breakout>
<Code isLight={true} language="json" isEtc={true}>
{`{
"compilerSettings": {
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
}
}`}
</Code>
</Breakout>
<Breakout>
<Code isLight={true} language="json" isEtc={true}>
{`{
"compilerOutput": {
"abi": [...],
"evm": {
"bytecode": {
"object": "0xdeadbeef",
"sourceMap": "26:480:..."
},
"deployedBytecode": {
"object": "0xdeadbeef",
"sourceMap": "26:480:0..."
}
}
}
"sources": {
"Migrations.sol": {
"id": 0
}
},
}`}
</Code>
</Breakout>
</ContentBlock>
</Content>
</Base>
);
const root = document.getElementById('app');
if (root.hasChildNodes()) {
hydrate(<Compiler />, root);
} else {
render(<Compiler />, root);
}