solc-js
cross-browser solidity compiler for the web
smaller and faster alternative to solc for browser-only environments
- JavaScript bindings for the solidity compiler
- Uses the emscripten compiled solidity found in the solc-bin repository
In nodejs you can instead use solc or solc-native
How can I help?
- Open issues on things that are broken
- Fix open issues by sending PRs
- Add documentation
Install
npm install solc-js
Usage
const solcjs =
await solcjs(version)
const version = 'v0.5.1-stable-2018.12.03'const compiler = await // or // const compiler = await solcjs() const sourceCode = ` pragma solidity >0.4.99 <0.6.0; library OldLibrary { function someFunction(uint8 a) public returns(bool); } contract NewContract { function f(uint8 a) public returns (bool) { return OldLibrary.someFunction(a); } }`const output = await
await solcjs(version).version
const version = 'v0.4.25-stable-2018.09.13'const compiler = await consoledircompilerversion// { 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()
const select = await solcjs const releases nightly all = selectconsole// v0.4.25-stable-2018.09.13
await solcjs.version2url(version)
const version = 'v0.4.25-stable-2018.09.13'const url = await solcjsconsole// https://solc-bin.ethereum.org/bin/soljson-v0.4.25+commit.59dbf8f1.js
const version = 'latest'const url = await solcjsconsole// https://solc-bin.ethereum.org/bin/soljson-v0.1.1+commit.6ff4cd6.js
await compiler(sourceCode)
const compiler = await const sourceCode = ` library OldLibrary { function someFunction(uint8 a) public returns(bool); } contract NewContract { function f(uint8 a) public returns (bool) { return OldLibrary.someFunction(a); } }` const output = await
const compiler = await const sourceCode = ` import 'https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/math/SafeMath.sol'; library OldLibrary { function someFunction(uint8 a) public returns(bool); } contract NewContract { function f(uint8 a) public returns (bool) { return OldLibrary.someFunction(a); } }` const output = await
await compiler(sourceCode, getImportContent)
const version = 'v0.5.1-stable-2018.12.03'const compiler = await const solcResolver = const sourceCode = ` pragma solidity >0.4.99 <0.6.0; import "lib.sol"; library OldLibrary { function someFunction(uint8 a) public returns(bool); } contract NewContract { function f(uint8 a) public returns (bool) { return OldLibrary.someFunction(a); } }` const store = store const ResolverEngine = resolverEngine;let resolveGithub = ;let resolveIpfs = ;let resolveHttp = ; let resolverEngine = ;resolverEngine;resolverEngine;resolverEngine; const getImportContent = { return myDB ? myDB : await resolverEngine;}; const output = await
Standard Output Format
"abi": … … "contractName": "SimpleStorage" "errors": … "metadata": compiler: … language: "Solidity" output: … settings: … sources: … … "success": true "version": "0.5.0+commit.1d4f565a"
Other related projects
License
MIT