This is a preliminary release.
ICP Package Manager is an analogue of Linux package managers, but for ICP. It allows to install the code of provided packages (in the future they will be provided by DAOs akin Linux distros) into a user's "own" subnet, giving the user sovereignity over his software and greater execution speed thanks to interoperating software installed in the same subnet.
For more information on this project see here and here.
See TODO.md
about yet unimplemented features.
Read here about this codebase.
I strongly recommend to use patched DFX for compiling this faster.
If you didn't run it yet, run dfx extension install nns
.
make deploy-work
for deploying the UI.
make deploy-test && npm test
for automatic tests.
To build a particular canister and its dependencies, issue make build@CANISTER
; to deploy a canister and its dependencies, make deploy@CANISTER
; to deploy without dependencies, make deploy-self@CANISTER
. To generate interface, make generate@CANISTER
.
To get started, you might want to explore the project directory structure and the default configuration file. Working with this project in your development environment will not affect any production deployment or identity tokens.
To learn more before you start working with ICP Package Manager, see the following documentation available online:
If you want to start working on your project right away, you might want to try the following commands:
cd icp-package-manager/
dfx help
dfx canister --help
If you are hosting frontend code somewhere without using DFX, you may need to make one of the following adjustments to ensure your project does not fetch the root key in production:
- set
DFX_NETWORK
toic
if you are using Webpack - use your own preferred method to replace
process.env.DFX_NETWORK
in the autogenerated declarations- Setting
canisters -> {asset_canister_id} -> declarations -> env_override to a string
indfx.json
will replaceprocess.env.DFX_NETWORK
with the string in the autogenerated declarations
- Setting
- Write your own
createActor
constructor