MorJS 复杂小程序 集成模块配置
在 mor.config.ts
通过设置 host: {}
或 modules: [{}]
来配置宿主或子模块,如:
有关 MorJS 配置的详细信息,参见:配置说明
export default defineConfig([
{
// 宿主配置
host: {}
// 子模块(如:分包等)
modules: [{}]
}
])
上述示例中的 host
和 modules
的配置方式基本一致,其中 host
只能配置一个,modules
可以配置多个,详细的配置方式如下:
{
/**
* 模块名称, 可选值, 默认会基于 `npm` 或 `git` 或 `tar` 或 `link` 或 `file` 配置自动生成
*/
name: '',
/**
* 模块集成模式, 默认为 `compose`
* - compose: 通过 compose 方式集成, 通过拷贝的方式复制到产物目录
* - compile: 通过 compile 方式集成, 需要通过 mor 编译流程
*/
mode: 'compose',
/**
* 模块类型, 默认为 `subpackage`
* - 声明为 宿主(host) 的模块,模块中包含 app.json 并作为其他模块集成的目标,配置在 `host` 中的模块,该类型固定为 `host `
* - 声明为 主包(main) 的模块,会将页面插入到小程序 app.json 的 pages 中
* - 声明为 分包(subpackage) 的模块,会将页面插入到小程序 app.json 的 subPackages 中
* - 声明为 插件(plugin) 的模块: 功能研发中
*/
type: 'subpackage',
/**
* 下载配置
*
* npm / git / tar / link / file 均用于下载模块, 只需要配置一个即可
*
* 如果同时配置了多个,则只会有一个下载配置生效,优先级为:npm > git > tar > link > file
*/
/* 通过 npm 配置模块下载 */
// 字符串方式配置,如:
npm: 'your_package@1.2.0',
// 对象方式配置,如:
npm: {
// npm 名称
name: 'your_package',
// npm 版本, 默认为 `latest`
version: '1.2.0'
},
/* 通过 git 仓库配置模块下载 */
// 字符串方式配置,如:
git: 'git@github.com:abc/cde.git#master'
// 对象方式配置,如:
// 注意: branch/tag/commit 的优先级为 commit > tag > branch, 相关字段均配置后,会按照优先级取用
git: {
// 仓库地址, 支持 git/http/https/ssh 协议链接
url: 'git@github.com:abc/cde.git',
// 分支配置, 默认为 HEAD
branch: 'develop',
// 标签配置
tag: 'v1.1.0',
// Git 提交 commit id
commit: 'abcdefghijklmnopqrstuvwxyz',
},
/* 通过 tar 配置模块下载 */
// 字符串方式配置,如:
tar: 'https://your_domain.com/abc.tar.gz',
// 对象方式配置,如:
tar: {
url: 'https://your_domain.com/abc.tar.gz',
// 支持增加扩展参数, 参见 got 配置
},
/* 通过 link 配置(软链)模块下载 */
// 字符串方式配置,如:
link: '/Users/yourHomeDir/Workspace/yourCustomHostPath',
// 对象方式配置,如:
link: {
path: '/Users/yourHomeDir/Workspace/yourCustomHostPath'
},
/* 通过 file 配置(复制)模块下载 */
// 字符串方式配置,如:
file: '/Users/yourHomeDir/Workspace/yourCustomHostPath',
// 对象方式配置,如:
file: {
path: '/Users/yourHomeDir/Workspace/yourCustomHostPath'
},
// 构建产物目录配置, 默认为 `dist`
// dist 配置的作用是告知 mor 当前模块的产物所存放的目录位置
dist: 'dist',
/**
* 集成构建过程中可执行的脚本, 可选配置
*/
scripts: {
// 执行脚本时的公共环境变量, 可选配置
// mor 默认会注入如下环境变量:
// MOR_COMPOSER_MODULE_CWD: 当前模块工作目录
// MOR_COMPOSER_MODULE_TYPE: 当前模块类型
// MOR_COMPOSER_MODULE_HASH: 当前模块 hash 信息, 用于 mor 内部判断是否需要重新下载模块
// MOR_COMPOSER_MODULE_ROOT: 当前模块根目录
// MOR_COMPOSER_MODULE_SOURCE: 当前模块源码目录
// MOR_COMPOSER_MODULE_OUTPUT_FROM: 当前模块原始产物目录
// MOR_COMPOSER_MODULE_OUTPUT_TO: 当前模块集成产物目录
env: {},
// 模块编译或拷贝前执行脚本, 可选配置
before: [
// 可以直接以字符串的方式配置命令
'npm i',
// 也可以以对象的方式配置
{
// 需要执行的命令
command: 'cd some_dir && mor compile',
// 该命令的自定义环境变量
env: {
CUSTOM_ENV: 'CUSTOM_ENV_VALUE'
},
// 该命令的选项, 参见 execa.command 的 options 配置
options: {
shell: true
}
},
],
// 模块编译完成后或拷贝后执行脚本,配置方式同 before,可选配置
after: [],
// 所有模块完成集成之后执行脚本,配置方式同 before,可选配置
composed: [],
// 脚本执行公共选项, 参见 execa.command 的 options 配置
options: {}
},
/**
* 模块配置内容,参见下方集成产物规范的 [config].json 描述
*/
config: undefined
}