ManifestJson

manifest.json 是 Esmx 框架在构建过程中生成的清单文件,用于记录服务构建的产物信息。它提供了统一的接口来管理构建产物、导出文件和资源统计。

类型定义

ManifestJson

interface ManifestJson {
  protocol: number;
  name: string;
  version: string;
  provides: Record<string, ManifestJsonProvide>;
  uses: string[];
  scopes: Record<string, Record<string, string>>;
  exports: ManifestJsonExports;
  files: string[];
  chunks: ManifestJsonChunks;
  integrity?: Record<string, string>;
}

protocol

  • 类型: number
  • 描述: 清单协议版本(RFC 0001 §5),当前为 2。v2 之前的清单没有该字段;读取端将缺失视为协议 1 并跳过 v2 专属检查。linker 会拒绝 protocol 高于支持版本的清单。

name

  • 类型: string
  • 描述: 模块名称,来源于模块配置

version

  • 类型: string
  • 描述: 模块版本,在构建时从模块的 package.json 转录(RFC 0001 §5)。v2 之前的清单在读取时默认为 '0.0.0'

provides

  • 类型: Record<string, ManifestJsonProvide>
  • 描述: 每个 pkg-export(pkg: true)包在构建时的已解析版本(RFC 0001 §5)。key 为包标识符,value 记录已解析的安装版本。

uses

  • 类型: string[]
  • 描述: 从模块 package.jsonesmx.uses 声明转录的消费边(RFC 0001 §5)。v2 之前的清单在读取时默认为 []

scopes

  • 类型: Record<string, Record<string, string>
  • 描述: 导入映射(Import Maps)的作用域映射,key 为作用域前缀,value 为该作用域下的 specifier -> resolved 映射,用于运行时基于路径前缀匹配并解析依赖。

exports

  • 类型: ManifestJsonExports
  • 描述: 导出项配置映射,key为导出路径,value为导出项信息

files

  • 类型: string[]
  • 描述: 构建输出文件的完整清单,包含所有生成的文件路径

chunks

  • 类型: ManifestJsonChunks
  • 描述: 编译文件信息,key为源文件,value为编译信息

integrity

  • 类型: Record<string, string>
  • 描述: 构建输出文件的子资源完整性(SRI)哈希,key 为相对文件路径,value 为 sha384- 完整性字符串。仅在生产构建中生成,以避免开发期开销。由 RenderContext.modulePreload() 消费,并注入到客户端导入映射中。

ManifestJsonExports

type ManifestJsonExports = Record<string, ManifestJsonExport>;

导出项配置映射,key为导出路径,value为导出项信息。

ManifestJsonProvide

interface ManifestJsonProvide {
  version: string;
}

关于某个被提供(pkg-export)包的构建时事实(RFC 0001 §5)。

version

  • 类型: string
  • 描述: 该被提供的包在构建时的已解析安装版本,从相对模块根目录的 node_modules/<pkg>/package.json 读取。子路径标识符(如 vue/jsx-runtime)通过其父包解析。当包无法解析时为 '0.0.0'

ManifestJsonExport

interface ManifestJsonExport {
  name: string;
  pkg: boolean;
  file: string;
  identifier: string;
}

name

  • 类型: string
  • 描述: 导出项名称

pkg

  • 类型: boolean
  • 描述: 是否是一个软件包

file

  • 类型: string
  • 描述: 导出项对应的文件路径

identifier

  • 类型: string
  • 描述: 导出项的唯一标识符

ManifestJsonChunks

type ManifestJsonChunks = Record<string, ManifestJsonChunk>;

编译文件信息映射,key为源文件,value为编译信息。

ManifestJsonChunk

interface ManifestJsonChunk {
  name: string;
  js: string;
  css: string[];
  resources: string[];
}

name

  • 类型: string
  • 描述: 当前源文件的标识符

js

  • 类型: string
  • 描述: 当前源文件编译后的 JS 文件路径

css

  • 类型: string[]
  • 描述: 当前源文件关联的 CSS 文件路径列表

resources

  • 类型: string[]
  • 描述: 当前源文件关联的其它资源文件路径列表