# `embark-compiler` > Embark compiler module Abstracts the compiler interface and exposes a plugin api to register contract extensions and how to handle them. It accepts command requests to compile and returns the aggregated compilation result. ## API **command: `compiler:contracts`** arguments: * `contractFiles` - * `options` - config object `{isCoverage: boolean (default: false)}` response: * `error` * `compiledObject` - compilation result ``` { runtimeBytecode: realRuntimeByteCode: code: abiDefinition: swarmHash: (optional) gasEstimates: (optional) functionHashes: (optional) filename: (optional) originalFilename: (optional) } ``` example: ``` import { File } from 'src/lib/core/file.js'; const contractFiles = [(new File({path: "simplestorage.sol", type: "custom", resolver: (cb) => { return cb(".. contract code...") }}))]; embark.events.request("compiler:contracts", contractFiles, {}, (err, compiledObject) => { }) ``` ## Plugins This module enables the `registerCompiler` plugin API. see [documentation](https://embark.status.im/docs/plugin_reference.html#embark-registerCompiler-extension-callback-contractFiles-doneCallback) ***embark.registerCompiler*** arguments: * `extension` - extension of the contract language (e.g `.sol`) * response callback * `contractFiles`: filenames matching the extension * `callback(error, compiledObject)` Visit [embark.status.im](https://embark.status.im/) to get started with [Embark](https://github.com/embark-framework/embark).