Last updated: May 9th 2019 ( Improve this guide )

Special Imports

Depending on which language for developing Smart Contracts is used, Embark supports special import paths. In this guide we’ll discuss the various ways of importing Smart Contract source code in other Smart Contract files.

Scope of this guide

The following features are currently only supported for Smart Contracts written in the Solidity programming language. If you’re using another language, such as Vyper, these features may not be available.

Importing files

If using Solidity it’s possible to import other Smart Contract files inside a source file from the application’s folders that are not explicitly defined in the contracts property of embark.json.

import "another_folder/another_test.sol";

Importing from node_modules

Embark also supports convenient imports from installed node_modules. Just specify the package name including the path to the Solidity file you wish to import.

import "openzeppelin-solidity/contracts/ownership/Ownable.sol";

Importing from remote paths

Source files can even be imported straight from Git, Github, IPFS, Swarm or via HTTP(S):

import "git://github.com/status/contracts/contracts/identity/ERC725.sol#develop";
import "github.com/status/contracts/contracts/identity/ERC725.sol";
import "https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol";
import "bzz:/1ffe993abc835f480f688d07ad75ad1dbdbd1ddb368a08b7ed4d3e400771dd63"