rsnext/.github/actions/next-stats-action
2024-07-05 09:21:57 +00:00
..
native Use react-dom/server.edge instead of .browser in Next.js runtime (#66954) 2024-06-19 11:41:07 +02:00
src Use react-dom/server.edge instead of .browser in Next.js runtime (#66954) 2024-06-19 11:41:07 +02:00
Dockerfile Bump minimum Node.js version to 18.18 (up from 18.17) (#67274) 2024-07-05 09:21:57 +00:00
entrypoint.sh Make shebangs portable used in the repo portable (#46028) 2023-02-17 09:45:42 +00:00
package.json Bump minimum Node.js version to 18.18 (up from 18.17) (#67274) 2024-07-05 09:21:57 +00:00
README.md Update references to zeit/next.js (#13463) 2020-05-27 17:51:11 -04:00

Next.js Stats GitHub Action

Downloads and runs project with provided configs gathering stats to compare branches

See it in action at Next.js https://github.com/vercel/next.js

Getting Started

  1. Add a .stats-app folder to your project with a stats-config.js and any files to run against for example a test app that is to be built
  2. Add the action to your workflow
  3. Enjoy the stats

Stats Config

const StatsConfig = {
  // the Heading to show at the top of stats comments
  commentHeading: 'Stats from current PR' | undefined,
  commentReleaseHeading: 'Stats from current release' | undefined,
  // the command to build your project if not done on post install
  initialBuildCommand: undefined | string,
  skipInitialInstall: undefined | boolean,
  // the command to build the app (app source should be in `.stats-app`)
  appBuildCommand: string,
  appStartCommand: string | undefined,
  // the main branch to compare against (what PRs will be merging into)
  mainBranch: 'canary',
  // the main repository path (relative to https://github.com/)
  mainRepo: 'vercel/next.js',
  // whether to attempt auto merging the main branch into PR before running stats
  autoMergeMain: boolean | undefined,
  // an array of configs for each run
  configs: [
    { // first run's config
      // title of the run
      title: 'fastMode stats',
      // whether to diff the outputted files (default: onOutputChange)
      diff: 'onOutputChange' | false | undefined,
      // config files to add before running diff (if `undefined` uses `configFiles`)
      diffConfigFiles: [] | undefined,
      // renames to apply to make file names deterministic
      renames: [
        {
          srcGlob: 'main-*.js',
          dest: 'main.js'
        }
      ],
      // config files to add before running (removed before successive runs)
      configFiles: [
        {
          path: './next.config.js',
          content: 'module.exports = { fastMode: true }'
        }
      ],
      // an array of file groups to diff/track
      filesToTrack: [
        {
          name: 'Pages',
          globs: [
            'build/pages/**/*.js'
          ]
        }
      ],
      // an array of URLs to fetch while `appStartCommand` is running
      // will be output to fetched-pages/${pathname}.html
      pagesToFetch: [
        'https://localhost:$PORT/page-1'
      ]
    },
    { // second run's config
      title: 'slowMode stats',
      diff: false,
      configFiles: [
        {
          path: './next.config.js',
          content: 'module.exports = { slowMode: true }'
        }
      ],
      filesToTrack: [
        {
          name: 'Main Bundles',
          globs: [
            'build/runtime/webpack-*.js',
            'build/runtime/main-*.js',
          ]
        }
      ]
    },
  ]
}

module.exports = StatsConfig