# Introduction

TronBox is a development environment and framework for blockchains using the TRON Virtual Machine. TronBox provides the following core functionalities:

  • Smart contract compilation

  • Migration (deployment on the network)

  • Testing

## Installation

OS requirement

  • NodeJS 5.0+

  • Windows, Linux, or Mac OS X



Installation permissions issue

If the command in the shell fails due to a permission issue, please follow this command to install again: sudo npm install -g tronbox --unsafe-perm=true --allow-root --save-dev grunt If you still have permission issues, you can try to use nvm to manage nmp and node and install again.

Note on Windows

For Windows, the best way to run TronBox is to install an Ubuntu subsystem: https://docs.microsoft.com/en-us/windows/wsl/install-win10. After running Ubuntu from the prompt, proceed as usual. It is not recommended to run TronBox from Powershell.

## Initialize a Tron-Box Project

Enter the following command under an empty folder


./contract./migrations./test./tronbox.js
The directory storing all smart contract files.The directory storing all javascript files for migration.The directory storing all test scripts for testing the smart contract.The configuration file of the project. Declare your Full Node address and Event Server in this file.

## Basic Commands

CommandUsage
tronbox compileCompiles all the smart contracts. The compiled result is stored into ./build/contracts. This command only compiles files that have been modified since the last compile.
tronbox compile --compile-allRe-compiles all the smart contracts.
tronbox migrateDeploys the contract. This command only migrates changes since the last successful migration.
tronbox migrate --resetRe-migrates all the smart contracts.
tronbox test [test_script_path]Runs all test scripts. Test file name definition is optional. It also can be run with --reset flag.
tronbox consoleThe console supports the `tronbox` command. For example, you can invoke `migrate --reset` in the console. The result is the same as invoking `tronbox migrate --reset` in the command.

## Extra Features in TronBox Console

  1. All the compiled contracts can be used, just like in development & test, front-end code, or during script migration.

  2. After each command, the contract is re-loaded. After invoking the `migrate--reset` command, you can immediately use the new address and binary.

  3. Every returned command's promise is automatically logged. There is no need to use `then()`, which simplifies the command.