@bytedance/mona-runtime

中文文档
0.3.50发布于 2026/01/21MITCommonJS近 30 天下载 1904

商贸应用软件的开发和制造工具

中文使用文档
文档目录15 节
  1. 组件
  2. Link
  3. 通用 API
  4. navigateTo
  5. redirectTo
  6. 飞鸽 API
  7. addToInputBoxSafely
  8. login
  9. getInitInfo
  10. onCurrentCustomerChange
  11. onShow
  12. 店铺装修 API
  13. 1.拉取ts声明
  14. 2.使用JsApi
  15. 3.注册装修组件端api

mona-runtime

mona 运行时

组件

跳转组件,支持插件/应用间页面跳转

例子

import { Link } from '@bytedance/mona-runtime';

const Index = () => {
  return (
    <div>
      <Link to="/pages/home/index">navigate to home </Link>
    </div>
  );
};

export default Index;

参数说明

参数说明是否必填类型默认值
to要跳转的页面路由是string-

通用 API

navigateTo

路由跳转,跳转到新的页面

例子

import { navigateTo } from '@bytedance/mona-runtime';

navigateTo('/pages/home/index');

redirectTo

路由重定向,跳转并替换当前页面路由

例子

import { redirectTo } from '@bytedance/mona-runtime';

redirectTo('/pages/home/index');

飞鸽 API

飞鸽 API 分为两类

  • 以onXXXX开头的监听类 API,该类 API 接受回调函数作为参数,当在飞鸽中相应事件发生时,飞鸽会调用传过来的回调函数。注意: 监听类的方法,只会记录最后一次监听的函数, 建议把监听的结果存入到全局变量。
  • 非onXXXX开头的普通的 API,可以直接触发飞鸽中相应的动作

    注意:飞鸽 API 需要在开放平台中拥有相应的插件 API 权限包

addToInputBoxSafely

使用场景

复制信息到输入框,支持文字。

对应权限包

权限名称所属权限包所属权限组权限描述
AddToInputBoxSafely端操作权限端操作权限端复制能力

入参

名称类型是否必填描述
successFunction❌1. 用户未被拉黑

  - 正在接待中 ,✅ 可复制

  - 用户不在接待中,下列条件同时满足, ✅ 可复制

    _ 客服非离线

    _ 7 天内有会话

    * 当前用户没有正在与其他客服对话
fail( error: { code: number, message: string } ) => void❌复制失败
datastring✅消息内容,length > 0

login

使用场景

获取当前客服登录态 token,通过开放接口换取当前飞鸽登录用户信息

对应权限包

权限名称所属权限包所属权限组权限描述
Login端操作权限端操作权限飞鸽登录能力

入参

名称类型是否必填描述
success( res: { token: string; shopId: number } ) => void❌获取登录态 token
fail( error: { code: number; message: string } ) => void❌获取失败

错误码

错误码错误描述排查
-100未知错误可能主应用内部原因。
-101缺参数、入参类型错误检查入参类型
-102无权限无权限,到开放平台申请权限包
-103应用不提供此能力本身无此能力/ 应用未实现此功能

示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.login({
  success: token => {
    // 传输token到自己服务端换以取自己的登录态
  },
  fail: error => {
    console.log(error);
  }, // {code: -100, message: '未知错误'}
});

getInitInfo

使用场景

应用初始化时获取信息。

对应权限

权限名称所属权限包所属权限组权限描述对应参数
UserID用户数据权限端数据权限用户 IDuser_id
ShopID店铺数据权限端数据权限店铺 IDshop_id
CustomsServiceNo客服数据权限端数据权限客服编号customer_service_id
CustomsServiceNickName客服数据权限端数据权限客服昵称customer_service_name

入参

名称类型是否必填描述
success(data: InitInfo) => void
❌会将有权限的数据,透传给插件。
fail( error: { code: number, message: string } ) => void❌获取数据失败

出参

错误码

错误码错误描述排查
-100未知错误① 非飞鸽容器环境
② 飞鸽内部原因,请咨询官方人员
-103应用不提供此能力本身无此能力/ 应用未实现此功能

示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.getInitInfo({
  success: data => {
    //  {
    //    user_id: '',
    //    customer_service_id '': ,
    //    customer_service_name: '',
    //    shop_id: ''
    //  }
    console.log(data);
  },
  fail: error => {
    console.log(error);
  }, // {code: -100, message: '未知错误'}
});

onCurrentCustomerChange

使用场景

监听用户改变,当切换飞鸽左侧的用户时,会触发该 API 回调。 没申请 user_id 权限包时,将不会监听到对应变化。

对应权限

权限名称所属权限包所属权限组权限描述对应参数
UserID用户数据权限端数据权限用户 IDuser_id

出参

类型含义
UserInfo{
user_id: string
}
用户 openid

示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.onCurrentCustomerChange(data => {
  console.log(data);
  // {
  //   user_id: 'xxxxxxx',
  // }
});

onShow

使用场景

监听插件展示,当插件在飞鸽中前台展示时,会触发该 API 回调

  • 自定义按钮跳转, 会携带部分参数。申请权限后,才会携带相应数据。

  • 从 tab 点击进入

参数对应权限包

位置入口权限名称所属权限包所属权限组权限描述对应参数
位置 1售后单入口AfterSaleID售后单数据权限端数据权限售后单 IDafter_sale_id
位置 2商品单入口SkuOrderID订单数据权限端数据权限sku 单 IDsku_order_id
位置 3店铺单入口OrderID订单数据权限端数据权限订单 IDorder_id
位置 4商品列表入口ProductID商品数据权限端数据权限商品 IDproduct_id

出参

key类型含义
showFrom
0 | 1 | 2 | 3 | 4
0:点击 tab 进入
自定义按钮跳转
1:店铺单进入 order_id
2:商品单进入 sku_order_id
3:售后单进入 after_sale_id
4:商品列表进入 product_id
query
interface InitInfo {
order_id?: string;
sku_order_id?: product_id;
after_sale_id?: string;
product_id?: string;
}
官方参数。申请权限后,自定义按钮跳转会携带位置对应参数。
extraData
Record<string,string>
自定义按钮中配置的参数
路径【飞鸽】-【客服管理】-【应用管理】- 【应用设置】-【非官方插件-设置】


示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.onShow(data => {
  console.log(data);
  // {
  //   showFrom: 0,
  //   query: {},
  //   extraData: {},
  // }
});

店铺装修 API

1.拉取ts声明

使用MaxSubAutoTypeWebpackPlugin插件,并在启动项目时便会自动拉取ts声明。

//webpack.config.js
const { MaxSubAutoTypeWebpackPlugin } = require("@bytedance/mona-plugin-events");

module.exports = {
  // ....
  plugins: [
    // ...
    new MaxSubAutoTypeWebpackPlugin(),
  ]
};
//运行webpack serve 获得代码提示

2.使用JsApi

import {max} from '@bytedance/mona-runtime';
//假设店铺端注册了getUserInfo以及getUserInfoSync两个方法
//调用同步getUserInfoSync方法
let user=max.getUserInfoSync({userName:'kenny'});
//调用异步getUserInfo方法
max.getUserInfo({userName:kenny}).then(res=>{console.log(res)}).catch(err=>console.error(err))

3.注册装修组件端api

通过on或once前缀的方法调用,便可进行api注册

import {max} from '@bytedance/mona-runtime';
//同步方法注册
max.onShowSync((data)=>{},{isSync:true});
//异步方法注册
max.onShow((data)=>{});

//使用once,调用一次后自动注销api
//同步方法注册
max.onceShowSync((data)=>{},{isSync:true});
//异步方法注册
max.onceShow((data)=>{});

使用off前缀方法可对api进行手动移除

import {max} from '@bytedance/mona-runtime';
let listener=max.onShow((data)=>{});
max.offShow(listener);

版本与发布记录

@bytedance/mona-runtime 共发布 391 个版本,首次发布于 2021/11/01;过去 12 个月发布了 3 个版本。

版本发布日期距今
0.3.50latest2026/01/219 个月前
0.3.492026/01/219 个月前
0.3.482025/12/1710 个月前
0.3.472025/07/111.3 年前
0.3.462025/07/111.3 年前
0.3.452025/07/101.3 年前

其他发布通道:beta → 0.3.20-beta.0,alpha → 0.3.44-alpha.2。

关于 @bytedance/mona-runtime 的常见问题

@bytedance/mona-runtime 是什么?

商贸应用软件的开发和制造工具

如何安装 @bytedance/mona-runtime?

在项目目录运行 npm install @bytedance/mona-runtime,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^17.0.2)、react-dom(^17.0.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bytedance/mona-runtime 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/bytedance__mona-runtime 是否存在。

@bytedance/mona-runtime 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@bytedance/mona-runtime 可以商用吗?

@bytedance/mona-runtime 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bytedance/mona-runtime 的下载量有多少?

根据 npm 官方下载统计,@bytedance/mona-runtime 在 2026/10/09 – 2026/11/07 这 30 天内被下载 1,904 次,日均约 63 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bytedance/mona-runtime 还在维护吗?

最新版本 0.3.50 发布于 2026/01/21(9 个月前);至今共发布 391 个版本,其中过去 12 个月发布了 3 个;首次发布于 2021/11/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。