ICP链打包生成子模块/派生模块wasm
我们如何通过不部署模块,获取该模块的wasm文件。
比如这些模块是从Root Canister/ Parent Canister 创建/派生出来的,这些子模块有很多初始化参数,并且都有意义.
我们无法通过 dfx deploy 创建该模块的Canister,或者我们需要构建一个无意义初始化参数创建一个无意义的Canister.
我认为这些并不是必须的,我们只想将该模块代码打包 生成wasm文件用于更新线上canister。
首先,我们需要在 `dfx.json` 文件声明子模块(并不是为了直接dfx deploy)
```
"spark_user": {
"main": "src/spark_backend/user.mo",
"type": "motoko"
},
```
然后,我们启动本地dfx
`dfx start --background --clean`
我们需要执行canister创建命令,为子模块创建本地canister(只是为了有一个canisterid,否则无法build)
`dfx canister create spark_user`
执行完毕后,我们执行build命令即可生成wasm文件
`dfx build spark_user`
最终生成wasm文件路径(workdir: 项目根目录)
`./.dfx/local/canisters/module-name/spark_user.wasm`
使用场景:通过根模块自动生成创建的子模块,子模块无法直接deploy部署,但是需要它的wasm文件时
比如这些模块是从Root Canister/ Parent Canister 创建/派生出来的,这些子模块有很多初始化参数,并且都有意义.
我们无法通过 dfx deploy 创建该模块的Canister,或者我们需要构建一个无意义初始化参数创建一个无意义的Canister.
我认为这些并不是必须的,我们只想将该模块代码打包 生成wasm文件用于更新线上canister。
首先,我们需要在 `dfx.json` 文件声明子模块(并不是为了直接dfx deploy)
```
"spark_user": {
"main": "src/spark_backend/user.mo",
"type": "motoko"
},
```
然后,我们启动本地dfx
`dfx start --background --clean`
我们需要执行canister创建命令,为子模块创建本地canister(只是为了有一个canisterid,否则无法build)
`dfx canister create spark_user`
执行完毕后,我们执行build命令即可生成wasm文件
`dfx build spark_user`
最终生成wasm文件路径(workdir: 项目根目录)
`./.dfx/local/canisters/module-name/spark_user.wasm`
使用场景:通过根模块自动生成创建的子模块,子模块无法直接deploy部署,但是需要它的wasm文件时
全部评论
相关推荐