You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

create-react-app(CRA)中如何单独提取Javascript与CSS的bundle体积

CRA 项目提取JS/CSS bundle体积的实现方法

方法1:直接解析build命令输出(无需修改配置)

CRA 执行yarn build的默认输出会明确列出所有构建产物的体积信息,你可以通过命令行工具直接过滤提取:

  • 提取所有JS bundle体积(Linux/macOS环境):
yarn build | grep -E '\.js$' | awk '{print "资源名:"$3," gzip体积:"$1$2}'
  • 提取所有CSS bundle体积:
yarn build | grep -E '\.css$' | awk '{print "资源名:"$3," gzip体积:"$1$2}'

这个方法适合临时快速统计,不需要改动项目任何配置。

方法2:通过配置自定义统计逻辑(更稳定,适合CI/自动化场景)

如果需要稳定的结构化数据用于自动化统计,不需要eject项目也可以实现:

  1. 先安装craco(也可以用react-app-rewired,逻辑一致)和体积统计依赖
yarn add @craco/craco stats-webpack-plugin -D
  1. 项目根目录新建craco.config.js,添加如下配置:
const StatsPlugin = require('stats-webpack-plugin');

module.exports = {
  webpack: {
    plugins: [
      new StatsPlugin('build-stats.json', {
        assets: true,
        excludeAssets: [/\.map$/, /asset-manifest\.json/, /\.html$/],
      })
    ]
  }
}
  1. 修改package.json里的build命令为craco build,执行yarn build后会在build目录生成build-stats.json文件
  2. 写个简单的脚本读取该文件,过滤后缀为.js和.css的资源,累加size字段即可得到原始体积,累加gzipSize字段即可得到gzip压缩后的体积。

方法3:已eject的项目

直接修改config/webpack.config.prod.js,在plugins数组中添加上面提到的StatsPlugin配置即可,逻辑和方法2完全一致。

小提示:如果只需要可视化查看体积分布,也可以安装source-map-explorer,执行npx source-map-explorer 'build/static/js/*.js'即可看到各部分代码的占比


内容的提问来源于stack exchange,提问作者Sergey Lukin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:48:03