This is the monorepo for Cannon. If you're just interested in using the project, visit the website.
For more information, please see documentation in the modules listed below:
cli
: The command-line interface. Runnpx @usecannon/cli --help
for usage information.builder
: Builds chain data from cannonfiles. (This is used by the CLI.)hardhat-cannon
: Code for the Hardhat plug-in, which wraps the CLI functionality with defaults pulled from a Hardhat project configuration.registry
: The smart contract for the package registry.registry-subgraph
: Indexes the registry contract onto The Graph for display on the website.website
: The website, hosted at https://usecannon.com
Usage Examples:
router-architecture
: Project demonstrating how to setup an upgradable Router Architecture.sample-hardhat-project
: Hardhat project that demonstrates the core functionality of thehardhat-cannon
modulesample-foundry-project
: Foundry project that demonstrates the core functionality of thecli
module
Community contributions to Cannon are greatly appreciated. Please open pull requests, issues, and discussions in the GitHub repository.
To load a development version of Cannon, start by installing the dependencies from the root directory:
npm ci
After making changes, rebuild the project:
npm run build
Use the development version of the CLI:
cd ./packages/cli && npm start -- <package:version>
Test changes to the Hardhat plug-in in the sample project:
cd ./examples/sample-hardhat-project && npx hardhat cannon:build
Preview updates to the website
cd ./packages/website && npm run dev
See CONTRIBUTING.md
Currently our release workflow handles publishing releases to npm through lerna. It only publishes releases if any SemVer version changes have been added to the commit history merged into main.
If a situation where a commit was merged without proper convention arises, we can always bump and publish manually using lerna's version and publish workflow:
npx lerna publish --no-private
will bump package versions and find npm packages that need to be published in the repo.
This project is licensed under the terms of the GNU General Public License v3.0.
Copyright (C) 2023 Daniel Beal, Noah Litvin, Matías Lescano