Mops is a package manager for the Motoko programming language.
npm i -g ic-mops
Add mops
as a packtool to your dfx.json
{
"defaults": {
"build": {
"packtool": "mops sources"
}
}
}
Run this command in the root directory of your project (where is dfx.json
placed)
If there are Vessel config files, mops will migrate packages from vessel.dhall
to mops.toml
mops init
Use mops add <package_name>
to install a specific package and save it to mops.toml
mops add base
You can also add packages from GitHub like this
mops add https://github.com/dfinity/motoko-base
For GitHub-packages you can specify branch, tag, or commit hash by adding #<branch/tag/hash>
mops add https://github.com/dfinity/motoko-base#moc-0.9.1
You can also add local packages like this (put source files inside src
directory)
mops add ./shared
Use mops install
to install all packages specified in mops.toml
mops install
Now you can import installed packages in your Motoko code
import PackageName "mo:<package_name>";
for example
import Itertools "mo:itertools/Iter";
Create new identity to publish packages
dfx identity new mops
Import identity into mops
mops user import -- "$(dfx identity export mops)"
Run this command in your package root and select type "Package"
mops init
Edit description
and repository
fields in mops.toml
file.
Write your package code in *.mo
source files in the src/
directory.
Create README.md
file with information on how to use your package.
Publish package to the mops registry!
mops publish
npm start
- starts local replica and dev server
To be able to install/publish packages locally:
- Make the following changes to the
cli/package.json
{
- "name": "ic-mops",
+ "name": "ic-mops-local",
"version": "0.1.14",
"type": "module",
"bin": {
- "mops": "cli.js"
+ "mops-local": "cli.js"
},
...
- Inside
cli
folder run
npm link
- Switch network to local
mops-local set-network local
- Revert changes made to
cli/package.json
Now you can install/publish packages locally like this mops-local add <pkg>
Built for the Supernova Hackathon