diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9da72bc..073f7ad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,6 +9,11 @@ on: paths-ignore: - '*.md' +permissions: + contents: read # for checkout repository + actions: read # for fetching base branch bundle stats + pull-requests: write # for comments + jobs: build: runs-on: ubuntu-latest @@ -34,6 +39,10 @@ jobs: else echo 'clean' fi + - name: Analyze esbuild bundle size + uses: exoego/esbuild-bundle-analyzer@main + with: + metafiles: "tmp/meta.json" - uses: actions/upload-artifact@v4 with: name: dist diff --git a/.gitignore b/.gitignore index a162f73..e16cd14 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ node_modules out .analyzer +tmp/meta.json # Allow-list !__tests__/__fixtures__/examples-with-base/**/.analyzer/base/bundle/bundle_analysis.json diff --git a/esbuild.mjs b/esbuild.mjs index cfa019c..4eced02 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -1,5 +1,5 @@ import * as esbuild from 'esbuild' -import { readFileSync } from 'node:fs' +import { readFileSync, writeFileSync } from 'node:fs' // https://github.com/evanw/esbuild/issues/1685#issuecomment-944916409 const excludeNodeModulesFromSourceMap = { @@ -18,7 +18,7 @@ const excludeNodeModulesFromSourceMap = { }, }; -await esbuild.build({ +const result = await esbuild.build({ entryPoints: [`./src/index.ts`], outfile: `dist/index.mjs`, format: 'esm', @@ -30,3 +30,5 @@ await esbuild.build({ bundle: true, plugins: [excludeNodeModulesFromSourceMap] }) + +writeFileSync(`tmp/meta.json`, JSON.stringify(result.metafile, null, 2)); diff --git a/tmp/.gitkeep b/tmp/.gitkeep new file mode 100644 index 0000000..e69de29