codecamp

MorJS 复杂小程序 集成模块配置

mor.config.ts 通过设置 host: {}modules: [{}] 来配置宿主或子模块,如:

有关 MorJS 配置的详细信息,参见:配置说明

export default defineConfig([
  {
    // 宿主配置
    host: {}

    // 子模块(如:分包等)
    modules: [{}]
  }
])

上述示例中的 hostmodules 的配置方式基本一致,其中 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
}


MorJS 复杂小程序 集成开启方式
MorJS 复杂小程序 集成产物临时目录
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

MorJS 指南

MorJS 基础用法

MorJS 配置

MorJS 编译相关配置

MorJS 进阶用法

MorJS Web开发

MorJS Web开发介绍

MorJS Web开发快速上手

MorJS Tabbar IOS 小黑条适配开关

MorJS 社区

MorJS 规范

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }