mo-dev
A live reload development server for Motoko smart contracts.
mo-dev
is a flexible command-line tool for speeding up your Motoko development workflow.
Try Online
Get started with a full-stack Vite + React + Motoko project directly in your browser:
Quick Start
Make sure that Node.js >= 16.x
is installed on your system, and then run the following command:
npm i -g mo-dev
View the available command-line options by passing the --help
flag:
mo-dev --help
Check out the Vite + React + Motoko starter project for an example of how to integrate mo-dev
into a modern full-stack webapp.
Basic Features
Regenerate type declarations on Motoko file change (--generate
or -g
):
mo-dev --generate
Deploy canisters on Motoko file change (--deploy
or -d
):
mo-dev --deploy
Automatically respond "yes" to reinstall prompts (--yes
or -y
; may clear canister state):
mo-dev --deploy -y
Run unit tests (*.test.mo
) on Motoko file change (--test
or -t
):
mo-dev --test
Run an arbitrary command on Motoko file change (--exec
or -x
):
mo-dev --exec 'npm run my-reload-script'
Specify the working directory (--cwd
or -c
; should contain a dfx.json
file):
mo-dev --cwd path/to/dfx_project
Advanced Features
Show additional debug output in the console (--verbose
or -v
):
mo-dev -v
mo-dev -vv
Programmatically start mo-dev
using JavaScript:
import devServer from 'mo-dev';
devServer();
devServer({
directory: '.',
port: 7700,
verbosity: 0,
});
mo-test
The mo-dev
npm package includes a mo-test
command which can be used to run unit tests in CI workflows.
View all available options:
mo-test --help
Run all Motoko unit tests (*.test.mo
):
mo-test
Run all Motoko unit tests using a WASI runtime by default (faster but requires installing Wasmtime on your system):
mo-test --testmode wasi
Configure the runtime of an individual unit test by including the following comment in a *.test.mo
file:
// @testmode wasi
mo-dev
is early in development. Please feel free to report a bug, ask a question, or request a feature on the project's GitHub issues page.
Contributions are welcome! Please check out the contributor guidelines for more information.