cross-browser solidity compiler for the web
npm install solc-js
sh
npm install solc-js
`
$3
`js
const solcjs = require('solc-js')
`
await solcjs(version)
`js
const version = 'v0.5.1-stable-2018.12.03'
const compiler = await solcjs(version)
// or
// const compiler = await solcjs()
const sourceCode =
const output = await compiler(sourceCode)
`
await solcjs(version).version
`js
const version = 'v0.4.25-stable-2018.09.13'
const compiler = await solcjs(version)
console.dir(compiler.version)
// { name: 'v0.4.25-stable-2018.09.13',
// url: 'https://solc-bin.ethereum.org/bin/soljson-v0.4.25+commit.59dbf8f1.js' }
`
await solcjs.versions()
`js
const select = await solcjs.versions()
const { releases, nightly, all } = select
console.log(releases[0])
// v0.4.25-stable-2018.09.13
`
await solcjs.version2url(version)
`js
const version = 'v0.4.25-stable-2018.09.13'
const url = await solcjs.version2url(version)
console.log(url)
// https://solc-bin.ethereum.org/bin/soljson-v0.4.25+commit.59dbf8f1.js
`
`js
const version = 'latest'
const url = await solcjs.version2url(version)
console.log(url)
// https://solc-bin.ethereum.org/bin/soljson-v0.1.1+commit.6ff4cd6.js
`
await compiler(sourceCode)
`js
const compiler = await solcjs()
const sourceCode =
const output = await compiler(sourceCode)
`
`js
const compiler = await solcjs()
const sourceCode =
const output = await compiler(sourceCode)
`
await compiler(sourceCode, getImportContent)
`js
const version = 'v0.5.1-stable-2018.12.03'
const compiler = await solcjs(version)
const solcResolver = require('solc-resolver')
const sourceCode =
const store = new Map()
store.set('lib.sol', 'library L { function f() internal returns (uint) { return 7; } }')
const ResolverEngine = require('solc-resolver').resolverEngine;
let resolveGithub = require('resolve-github');
let resolveIpfs = require('resolve-ipfs');
let resolveHttp = require('resolve-http');
let resolverEngine = new ResolverEngine();
resolverEngine.addResolver(resolveGithub);
resolverEngine.addResolver(resolveIpfs);
resolverEngine.addResolver(resolveHttp);
const getImportContent = async function (path) {
return myDB.has(path) ? myDB.get(path) : await resolverEngine.require(path);
};
const output = await compiler(sourceCode, async (path) => {
return store.has(path) ? store.get(path) : await resolverEngine.require(path))
}
`
$3
`js
{
"abi": [{…}, {…}],
"contractName": "SimpleStorage",
"errors": [{…}],
"metadata": {compiler: {…}, language: "Solidity", output: {…}, settings: {…}, sources: {…}, …},
"success": true,
"version": "0.5.0+commit.1d4f565a"
}
``