How can you setup dfx.json to use mops.toml files in subdirectories for each canister?

I have this canisters and i have 2 different mops.toml files in this subdirectory backend/apps/app2/canister and this one backend/apps/app1/canister

{
    "canisters": {
        "app2": {
            "main": "backend/apps/app2/canister/src/main.mo",
            "build": "cd backend/apps/app2/canister && mops sources",
            "type": "motoko"
        },
        "app1": {
            "type": "motoko",
            "main": "backend/apps/app1/canister/src/main.mo",
            "build": "cd backend/apps/app1/canister && mops sources"
        }
    }
}

If i combine the packages in mops.toml and have that in the root of my folders and instead use this setup in my dfx.json it works

{
    "canisters": {
        "app2": {
            "main": "backend/apps/app2/canister/src/main.mo",
            "type": "motoko"
        },
        "app1": {
            "type": "motoko",
            "main": "backend/apps/app1/canister/src/main.mo",
        }
    },
    "defaults": {
        "build": {
            "packtool": "mops sources"
        }
    }
}

please say there is a nice way to do this

CC @ZenVoich. I’ll also bring this up internally to see if we could support canister-specific packtool commands in the dfx.json config file.

1 Like