Build and initialize Ethereum development environment with one click.


This project is a bit like create react app. The purpose is to help developers quickly initialize the development environment. See GitHub homepage for specific project use and introduction.

Use guide

First of all, you have to install truss globally. suchcreate-smart-contract myapp, a project folder will be initialized for you with truss. Then install a series of useful plug-ins and packages for you. Finally, some default configuration files are generated for you. The following are the included frameworks, plug-ins, packages and configuration files. At present, openzeppelin does not support Solc of 0.8, so I use the latest version of 0.7 by default.

  • truffle

    • @truffle/hdwallet-provider
    • eth-gas-reporter
    • solidity-coverage
    • truffle-assertions
  • hardhat

    • @nomiclabs/hardhat-ethers
    • @nomiclabs/hardhat-truffle5
    • @nomiclabs/hardhat-waffle
    • @nomiclabs/hardhat-web3
  • ethers
  • @openzeppelin/contracts
  • chai
  • solidity-docgen
  • mocha
  • prettier
  • prettier-plugin-solidity
  • solc
  • web3
  • ethereum-waffle
  • .gitignore
  • .prettierrc
  • hardhat.config.js
  • slither.config.json
  • solcover.js
  • truffle-config.js

In addition, I also added some useful node scripts.

  • npm run test: used to run tests. I used hardhat. Because it runs test fast and supports the use in smart contractsconsole.log
  • npm run doc: automatically generate documents according to Doxygen.
  • npm run coverage: according to the configuration file.solcover.jsGenerate test coverage reports.
  • npm run analyzeAccording to the configuration fileslither.config.jsonStatic analysis of smart contracts_ Note: slither is required to be installed_



You can customize the package you want. changeindex.jsofinstallPackages。 for example

const installPackages = () => {
  return new Promise((resolve) => {
    console.log("\nInstalling hardhat\n".cyan);
    shell.exec(`npm install --save-dev hardhat`, () => {
      console.log("\nFinished installing packages\n".green);


You can change, add or delete templates yourself. For example, if you want to add a template, you need to add the template filetemplates/Then modifytemplates/templates.js。 for example

let fs = require("fs");
let path = require("path");
const gitIgnore = fs.readFileSync(path.resolve(__dirname, "./gitignore"));
const solcover = fs.readFileSync(path.resolve(__dirname, "./solcover.js"));
const slither = fs.readFileSync(
  path.resolve(__dirname, "./slither.config.json")
const hardhatConfig = fs.readFileSync(
  path.resolve(__dirname, "./hardhat.config.js")
const truffleConfig = fs.readFileSync(
  path.resolve(__dirname, "./truffle-config.js")
const prettier = fs.readFileSync(path.resolve(__dirname, "./.prettierrc"));
const package = fs.readFileSync(path.resolve(__dirname, "package.json"));
const env = fs.readFileSync(path.resolve(__dirname, ".env"));
module.exports = {
  ".gitignore": gitIgnore,
  "solcover.js": solcover,
  "slither.config.json": slither,
  "truffle-config.js": truffleConfig,
  "hardhat.config.js": hardhatConfig,
  ".prettierrc": prettier,
  "package.json": package,
  ".env": env,

I wish you a happy development.

Recommended Today

Docker installation elasticsearch

1. Pull the official elasticsearch image from dockerhub Official warehouse: docker pull elasticsearch:7.10.1 2. Create and authorize the container mount directory, and persist the container data and configuration Create three directories to mount configuration config, data and plug-in plugins respectively mkdir -p /elasticsearch/data mkdir -p /elasticsearch/config mkdir -p /elasticsearch/plugins Grant read / write execution permission […]