diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 2e8c786ce..be719993f 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -74,7 +74,14 @@ jobs: run: pnpm install --frozen-lockfile - name: Update build info run: pnpm run chore:update-build-info - - name: Trigger build + - name: Trigger client build + run: pnpm nx run client:build + - name: Send client bundle stats to RelativeCI + uses: relative-ci/agent-action@v3 + with: + webpackStatsFile: ./apps/client/dist/webpack-stats.json + key: ${{ secrets.RELATIVE_CI_CLIENT_KEY }} + - name: Trigger server build run: pnpm nx run server:build - uses: docker/setup-buildx-action@v3 - uses: docker/build-push-action@v6 diff --git a/apps/client/vite.config.mts b/apps/client/vite.config.mts index 839c24578..3c701eebe 100644 --- a/apps/client/vite.config.mts +++ b/apps/client/vite.config.mts @@ -3,6 +3,7 @@ import { join, resolve } from 'path'; import { defineConfig } from 'vite'; import { viteStaticCopy } from 'vite-plugin-static-copy' import asset_path from './src/asset_path'; +import webpackStatsPlugin from 'rollup-plugin-webpack-stats'; const assets = [ "assets", "stylesheets", "libraries", "fonts", "translations" ]; @@ -33,7 +34,8 @@ export default defineConfig(() => ({ dest: "", } ] - }) + }), + webpackStatsPlugin() ], resolve: { alias: [ diff --git a/apps/server/package.json b/apps/server/package.json index abb9a19ef..77ef98859 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -282,7 +282,10 @@ { "glob": "**/*", "input": "apps/client/dist", - "output": "public" + "output": "public", + "ignore": [ + "webpack-stats.json" + ] }, { "glob": "**/*", diff --git a/package.json b/package.json index 4029ac7db..2d20435b1 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "jsonc-eslint-parser": "^2.1.0", "nx": "21.1.3", "react-refresh": "^0.17.0", + "rollup-plugin-webpack-stats": "2.0.7", "tslib": "^2.3.0", "tsx": "4.19.4", "typescript": "~5.8.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e4432066..b70457293 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,6 +123,9 @@ importers: react-refresh: specifier: ^0.17.0 version: 0.17.0 + rollup-plugin-webpack-stats: + specifier: 2.0.7 + version: 2.0.7(rollup@4.40.0)(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(less@4.1.3)(sass-embedded@1.87.0)(sass@1.87.0)(stylus@0.64.0)(sugarss@4.0.1(postcss@8.5.3))(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0)) tslib: specifier: ^2.3.0 version: 2.8.1 @@ -10957,6 +10960,18 @@ packages: robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup-plugin-stats@1.3.9: + resolution: {integrity: sha512-rpz+EIdA9rQfkK/RiiMde0H8r/yCU4ilQJVZNFO6o1pU1H+pTMhu5Nlkm4+7J95+J98n0T5gxQPwyi/sxCRQXw==} + engines: {node: '>=18'} + peerDependencies: + rollup: ^3.0.0 || ^4.0.0 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + rollup: + optional: true + vite: + optional: true + rollup-plugin-styles@4.0.0: resolution: {integrity: sha512-A2K2sao84OsTmDxXG83JTCdXWrmgvQkkI38XDat46rdtpGMRm9tSYqeCdlwwGDJF4kKIafhV1mUidqu8MxUGig==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10969,6 +10984,18 @@ packages: peerDependencies: rollup: ^3.0.0||^4.0.0 + rollup-plugin-webpack-stats@2.0.7: + resolution: {integrity: sha512-aAd/4GrnsDuwFIlPJpIJ/wcu6msiza5lNZIrfWXmskwLSEx9GhJlKFYU3HHgl5XHLgdF45ajCrV8X0k3EV4ztw==} + engines: {node: '>=18'} + peerDependencies: + rollup: ^3.0.0 || ^4.0.0 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + rollup: + optional: true + vite: + optional: true + rollup@4.40.0: resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -25217,6 +25244,11 @@ snapshots: robust-predicates@3.0.2: {} + rollup-plugin-stats@1.3.9(rollup@4.40.0)(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(less@4.1.3)(sass-embedded@1.87.0)(sass@1.87.0)(stylus@0.64.0)(sugarss@4.0.1(postcss@8.5.3))(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0)): + optionalDependencies: + rollup: 4.40.0 + vite: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(less@4.1.3)(sass-embedded@1.87.0)(sass@1.87.0)(stylus@0.64.0)(sugarss@4.0.1(postcss@8.5.3))(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0) + rollup-plugin-styles@4.0.0(rollup@4.40.0): dependencies: '@rollup/pluginutils': 4.2.1 @@ -25244,6 +25276,13 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.40.0) rollup: 4.40.0 + rollup-plugin-webpack-stats@2.0.7(rollup@4.40.0)(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(less@4.1.3)(sass-embedded@1.87.0)(sass@1.87.0)(stylus@0.64.0)(sugarss@4.0.1(postcss@8.5.3))(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0)): + dependencies: + rollup-plugin-stats: 1.3.9(rollup@4.40.0)(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(less@4.1.3)(sass-embedded@1.87.0)(sass@1.87.0)(stylus@0.64.0)(sugarss@4.0.1(postcss@8.5.3))(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0)) + optionalDependencies: + rollup: 4.40.0 + vite: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(less@4.1.3)(sass-embedded@1.87.0)(sass@1.87.0)(stylus@0.64.0)(sugarss@4.0.1(postcss@8.5.3))(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0) + rollup@4.40.0: dependencies: '@types/estree': 1.0.7