mf-stats.json 字段定义

mf-stats.json 是启用 manifest 后生成的构建统计文件,包含本次构建的 exposes/shared/remotes 资源信息、metaData(构建信息、remoteEntry 等)以及资产分析结果。

本文按字段解释 mf-stats.json 的结构,便于排查“线上到底加载了哪些资源”“某个 shared 在哪些地方被用到”“remoteEntry 的类型/地址是什么”等问题。

顶层结构

字段类型必有说明
idstring本次构建的唯一标识
namestringfederation name
metaDataStatsMetaData构建与远程入口信息
sharedStatsShared[]shared 依赖列表(包含版本、资源与使用信息)
remotesStatsRemote[]remotes 列表(包含 entry/version 以及消费关系)
exposesStatsExpose[]exposes 列表(包含资源与依赖信息)

metaData(两者都有)

metaData 描述“这个构建产物怎么被消费端加载”以及“本次构建的上下文信息”。mf-stats.jsonmf-manifest.json 都包含该字段。

StatsMetaData

StatsMetaData 有两种互斥形态(只会出现一种):

  • 函数形式getPublicPath: string
  • 字符串形式publicPath: string(可选 ssrPublicPath: string

共同字段如下:

| 字段 | 类型 | 必有 | 说明 | | ---------------- | ---------------- | ---- | ----------------------------- | --- | | name | string | 是 | 当前 remote/host 名称 | | globalName | string | 是 | remoteEntry 对应的 globalName | | buildInfo | StatsBuildInfo | 是 | 构建信息(版本/构建名等) | | remoteEntry | ResourceInfo | 是 | remoteEntry 资源信息 | | ssrRemoteEntry | ResourceInfo | 否 | SSR remoteEntry(若有) | | types | MetaDataTypes | 否 | 类型产物信息(若有) | | type | string | 是 | APP | NPM | | pluginVersion | string | 否 | MF 构建插件版本 |

ResourceInfo

字段类型必有说明
pathstring构建产物内路径(相对路径)
namestring文件名
typeRemoteEntryTyperemoteEntry 的输出格式(例如 var/umd/system/...

StatsBuildInfo

字段类型必有说明
buildVersionstring构建版本
buildNamestring构建名
targetstring[]target 列表
pluginsstring[]treeShaking 插件列表
excludePluginsstring[]treeShaking 排除插件列表

MetaDataTypes

字段类型必有说明
pathstring产物路径
namestring文件名(旧版类型需要,即将废弃)
apistringAPI 类型入口
zipstringzip 包地址/路径

assets(两者都有)

StatsAssets 描述某个条目(shared/expose)的同步/异步资源列表。mf-stats.jsonmf-manifest.json 都会用到该结构。

StatsAssets

字段类型必有说明
jsStatsAssetsInfoJS 资源
cssStatsAssetsInfoCSS 资源

StatsAssetsInfo

字段类型必有说明
syncstring[]初始加载资源
asyncstring[]异步加载资源

shared

StatsShared

字段类型必有说明
idstringshared 唯一 id
namestring包名
versionstring本次构建使用的版本
singletonboolean是否 singleton
requiredVersionstringrequiredVersion
hashstring内容 hash
assetsStatsAssets资源列表
depsstring[]依赖列表
usedInstring[]被哪些模块/容器使用
usedExportsstring[]实际使用到的导出
fallbackstringtreeshaking fallback 路径/标识
fallbackNamestringtreeshaking fallback 名称
fallbackTypeRemoteEntryTypetreeshaking fallback 产物类型

remotes

StatsRemote 是 “remote 的消费关系” 记录:包含它的 entryversion(二选一),以及它在当前构建里是如何被消费的。

StatsRemoteVal(共同字段)

字段类型必有说明
moduleNamestringremote 模块名
federationContainerNamestringremote 容器名
consumingFederationContainerNamestring消费端容器名
aliasstringalias
usedInstring[]被哪些模块/容器使用

StatsRemote(互斥字段)

  • entry: string(存在时不会有 version
  • version: string(存在时不会有 entry

exposes

StatsExpose

字段类型必有说明
idstringexpose 唯一 id
namestringexpose 名称(如 ./Button
pathstring源码路径(若有)
filestring产物文件
requiresstring[]依赖列表
assetsStatsAssets资源列表