Skip to content

Commit

Permalink
feat: добавлен next bundle analyzer и GHA для него
Browse files Browse the repository at this point in the history
  • Loading branch information
mxseev committed Nov 24, 2022
1 parent a051954 commit 2e8c116
Show file tree
Hide file tree
Showing 4 changed files with 334 additions and 7 deletions.
94 changes: 94 additions & 0 deletions .github/workflows/next-bundle-analyzer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: 'Next.js Bundle Analysis'

on:
pull_request:
workflow_dispatch:
push:
branches:
- main

defaults:
run:
working-directory: ./

jobs:
analyze:
runs-on: ubuntu-latest
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'

- name: Install dependencies
run: npm ci

- name: Restore next build
uses: actions/cache@v3
id: restore-build-cache
env:
cache-name: cache-next-build
with:
path: .next/cache
key: ${{ runner.os }}-build-${{ env.cache-name }}

- name: Build next.js app
run: ./node_modules/.bin/next build

- name: Analyze bundle
run: npx -p nextjs-bundle-analysis report

- name: Upload bundle
uses: actions/upload-artifact@v3
with:
name: bundle
path: .next/analyze/__bundle_analysis.json

- name: Download base branch bundle stats
uses: dawidd6/action-download-artifact@v2
if: success() && github.event.number
with:
workflow: nextjs_bundle_analysis.yml
branch: ${{ github.event.pull_request.base.ref }}
path: .next/analyze/base

- name: Compare with base branch bundle
if: success() && github.event.number
run: ls -laR .next/analyze/base && npx -p nextjs-bundle-analysis compare

- name: Get comment body
id: get-comment-body
if: success() && github.event.number
run: |
body=$(cat .next/analyze/__bundle_analysis_comment.txt)
body="${body//'%'/'%25'}"
body="${body//$'\n'/'%0A'}"
body="${body//$'\r'/'%0D'}"
echo ::set-output name=body::$body
- name: Find Comment
uses: peter-evans/find-comment@v2
if: success() && github.event.number
id: fc
with:
issue-number: ${{ github.event.number }}
body-includes: '<!-- __NEXTJS_BUNDLE -->'

- name: Create Comment
uses: peter-evans/create-or-update-comment@v2.1.0
if: success() && github.event.number && steps.fc.outputs.comment-id == 0
with:
issue-number: ${{ github.event.number }}
body: ${{ steps.get-comment-body.outputs.body }}

- name: Update Comment
uses: peter-evans/create-or-update-comment@v2.1.0
if: success() && github.event.number && steps.fc.outputs.comment-id != 0
with:
issue-number: ${{ github.event.number }}
body: ${{ steps.get-comment-body.outputs.body }}
comment-id: ${{ steps.fc.outputs.comment-id }}
edit-mode: replace
11 changes: 9 additions & 2 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,18 @@

const {withAxiom} = require("next-axiom")
const {withSentryConfig} = require("@gooditworks/monitoring/next")
const withBundleAnalyzer = require("@next/bundle-analyzer")

const isDeploy = ["production", "preview"].includes(process.env.VERCEL_ENV)

const sentryConfig = {
silent: true
}

const bundleAnalyzerConfig = {
enabled: process.env.ANALYZE === "true"
}

/** @type {import('next').NextConfig} */
const config = {
sentry: {
Expand All @@ -22,10 +27,12 @@ const config = {
remotePatterns: [
{
protocol: "https",
hostname: "www.freecodecamp.org",
hostname: "www.freecodecamp.org"
}
]
}
}

module.exports = withSentryConfig(withAxiom(config), sentryConfig)
module.exports = withBundleAnalyzer(bundleAnalyzerConfig)(
withSentryConfig(withAxiom(config), sentryConfig)
)
Loading

0 comments on commit 2e8c116

Please sign in to comment.