From fef86cfa1c48c4771e5843b6ea76c3cbedfd1e04 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Mon, 17 Mar 2025 16:54:51 +0100 Subject: [PATCH 01/15] fix(nuxt): Add Nitro Rollup plugin to inject Sentry server config --- packages/nuxt/src/module.ts | 2 +- packages/nuxt/src/vite/addServerConfig.ts | 60 ++++++++++++++++++----- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index 4f0abce6a8ef..c239aeaf1432 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -113,7 +113,7 @@ export default defineNuxtModule({ }); if (moduleOptions.autoInjectServerSentry !== 'experimental_dynamic-import') { - addServerConfigToBuild(moduleOptions, nuxt, nitro, serverConfigFile); + addServerConfigToBuild(moduleOptions, nitro, serverConfigFile); if (moduleOptions.debug) { const serverDirResolver = createResolver(nitro.options.output.serverDir); diff --git a/packages/nuxt/src/vite/addServerConfig.ts b/packages/nuxt/src/vite/addServerConfig.ts index b5577830396b..3ee59a210cdd 100644 --- a/packages/nuxt/src/vite/addServerConfig.ts +++ b/packages/nuxt/src/vite/addServerConfig.ts @@ -1,7 +1,6 @@ import * as fs from 'fs'; import { createResolver } from '@nuxt/kit'; -import type { Nuxt } from '@nuxt/schema'; -import { consoleSandbox } from '@sentry/core'; +import { consoleSandbox, logger } from '@sentry/core'; import type { Nitro } from 'nitropack'; import type { InputPluginOption } from 'rollup'; import type { SentryNuxtModuleOptions } from '../common/types'; @@ -15,6 +14,7 @@ import { getFilenameFromNodeStartCommand, removeSentryQueryFromPath, } from './utils'; +import { existsSync } from 'node:fs'; const SERVER_CONFIG_FILENAME = 'sentry.server.config'; @@ -26,19 +26,18 @@ const SERVER_CONFIG_FILENAME = 'sentry.server.config'; */ export function addServerConfigToBuild( moduleOptions: SentryNuxtModuleOptions, - nuxt: Nuxt, nitro: Nitro, serverConfigFile: string, ): void { - nuxt.hook('vite:extendConfig', async (viteInlineConfig, _env) => { - if ( - typeof viteInlineConfig?.build?.rollupOptions?.input === 'object' && - 'server' in viteInlineConfig.build.rollupOptions.input - ) { - // Create a rollup entry for the server config to add it as `sentry.server.config.mjs` to the build - (viteInlineConfig.build.rollupOptions.input as { [entryName: string]: string })[SERVER_CONFIG_FILENAME] = - createResolver(nuxt.options.srcDir).resolve(`/${serverConfigFile}`); + nitro.hooks.hook('rollup:before', (nitro, rollupConfig) => { + if (rollupConfig?.plugins === null || rollupConfig?.plugins === undefined) { + rollupConfig.plugins = []; + } else if (!Array.isArray(rollupConfig.plugins)) { + // `rollupConfig.plugins` can be a single plugin, so we want to put it into an array so that we can push our own plugin + rollupConfig.plugins = [rollupConfig.plugins]; } + + rollupConfig.plugins.push(injectServerConfigPlugin(nitro, serverConfigFile, moduleOptions.debug)); }); /** @@ -158,6 +157,45 @@ export function addDynamicImportEntryFileWrapper( ); } +/** + * Rollup plugin to include the Sentry server configuration file to the server build output. + */ +function injectServerConfigPlugin(nitro: Nitro, serverConfigFile: string, debug?: boolean): InputPluginOption { + const filePrefix = '\0virtual:sentry-server-config:'; + + return { + name: 'rollup-plugin-inject-sentry-server-config', + + buildStart() { + const configPath = createResolver(nitro.options.srcDir).resolve(`/${serverConfigFile}`); + + if (!existsSync(configPath)) { + if (debug) { + logger.log(`[Sentry] Sentry server config file not found: ${configPath}`); + } + return; + } + + // Emitting a file adds it to the build output (Rollup is aware of the file, and we can later return the code in resolveId) + this.emitFile({ + type: 'chunk', + id: `${filePrefix}${serverConfigFile}`, + fileName: `${SERVER_CONFIG_FILENAME}.mjs`, + }); + }, + + resolveId(source) { + if (source.startsWith(filePrefix)) { + const originalFilePath = source.replace(filePrefix, ''); + const configPath = createResolver(nitro.options.rootDir).resolve(`/${originalFilePath}`); + + return { id: configPath }; + } + return null; + }, + }; +} + /** * A Rollup plugin which wraps the server entry with a dynamic `import()`. This makes it possible to initialize Sentry first * by using a regular `import` and load the server after that. From a44a2893f642a1de95d95d90ff6cb9889391ccf1 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 11 Mar 2025 14:34:17 +0100 Subject: [PATCH 02/15] ci(nuxt): Test Nightly Channels of Nuxt --- .github/workflows/canary.yml | 6 ++++++ .../e2e-tests/test-applications/nuxt-3/package.json | 9 +++++++++ .../e2e-tests/test-applications/nuxt-4/package.json | 9 +++++++++ 3 files changed, 24 insertions(+) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 2218fe19ebd0..582e2c547a26 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -108,6 +108,12 @@ jobs: - test-application: 'react-router-6' build-command: 'test:build-canary' label: 'react-router-6 (canary)' + - test-application: 'nuxt-3' + build-command: 'test:build-nightly' + label: 'nuxt-3 (nightly)' + - test-application: 'nuxt-4' + build-command: 'test:build-nightly' + label: 'nuxt-4 (nightly)' steps: - name: Check out current commit diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index 0656c5978990..ae47ac97c706 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -12,6 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", + "test:build-nightly": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@3x && pnpm build", "test:assert": "pnpm test" }, "dependencies": { @@ -21,5 +22,13 @@ "devDependencies": { "@playwright/test": "~1.50.0", "@sentry-internal/test-utils": "link:../../../test-utils" + }, + "sentryTest": { + "optionalVariants": [ + { + "build-command": "test:build-nightly", + "label": "nuxt-3 (nightly)" + } + ] } } diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index 104032962c50..2b3ff9e1078a 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,6 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", + "test:build-nightly": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@latest && pnpm build", "test:assert": "pnpm test" }, "dependencies": { @@ -25,5 +26,13 @@ }, "overrides": { "@vercel/nft": "0.27.4" + }, + "sentryTest": { + "optionalVariants": [ + { + "build-command": "test:build-nightly", + "label": "nuxt-4 (nightly)" + } + ] } } From 83acc0e82c21c9d77cb0821af2770cec4f4f7a32 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Mon, 17 Mar 2025 17:11:56 +0100 Subject: [PATCH 03/15] rename to canary --- .github/workflows/canary.yml | 8 ++++---- .../e2e-tests/test-applications/nuxt-3/package.json | 6 +++--- .../e2e-tests/test-applications/nuxt-4/package.json | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 582e2c547a26..53c561e96828 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -109,11 +109,11 @@ jobs: build-command: 'test:build-canary' label: 'react-router-6 (canary)' - test-application: 'nuxt-3' - build-command: 'test:build-nightly' - label: 'nuxt-3 (nightly)' + build-command: 'test:build-canary' + label: 'nuxt-3 (canary)' - test-application: 'nuxt-4' - build-command: 'test:build-nightly' - label: 'nuxt-4 (nightly)' + build-command: 'test:build-canary' + label: 'nuxt-4 (canary)' steps: - name: Check out current commit diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index ae47ac97c706..fa43a26e642e 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-nightly": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@3x && pnpm build", + "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@3x && pnpm build", "test:assert": "pnpm test" }, "dependencies": { @@ -26,8 +26,8 @@ "sentryTest": { "optionalVariants": [ { - "build-command": "test:build-nightly", - "label": "nuxt-3 (nightly)" + "build-command": "test:build-canary", + "label": "nuxt-3 (canary)" } ] } diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index 2b3ff9e1078a..31eac41401bd 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-nightly": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@latest && pnpm build", + "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@latest && pnpm build", "test:assert": "pnpm test" }, "dependencies": { @@ -30,8 +30,8 @@ "sentryTest": { "optionalVariants": [ { - "build-command": "test:build-nightly", - "label": "nuxt-4 (nightly)" + "build-command": "test:build-canary", + "label": "nuxt-4 (canary)" } ] } From 4a2965855478ffcc28e2f82df4c8ba9a6d508d0a Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 11:22:18 +0100 Subject: [PATCH 04/15] install as nuxt and not nuxt-nightly --- dev-packages/e2e-tests/test-applications/nuxt-3/package.json | 2 +- dev-packages/e2e-tests/test-applications/nuxt-4/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index fa43a26e642e..c1f0272bdf03 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@3x && pnpm build", + "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt@npm:nuxt-nightly@3x && pnpm build", "test:assert": "pnpm test" }, "dependencies": { diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index 31eac41401bd..a1f6b1ee8362 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt-nightly@latest && pnpm build", + "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From 3bfa711263a0dc8a2ec6818aa204e869acfd08c6 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 11:45:29 +0100 Subject: [PATCH 05/15] trying to fix using old nitro version in tests --- .../test-applications/nuxt-3-dynamic-import/package.json | 8 +++++--- .../e2e-tests/test-applications/nuxt-4/package.json | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json index 3c383fe962e1..1277c8a76966 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json @@ -21,8 +21,10 @@ "@playwright/test": "~1.50.0", "@sentry-internal/test-utils": "link:../../../test-utils" }, - "overrides": { - "nitropack": "~2.9.7", - "ofetch": "^1.4.0" + "pnpm": { + "overrides": { + "nitropack": "~2.9.7", + "ofetch": "^1.4.0" + } } } diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index a1f6b1ee8362..fb21d24cbae2 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm build", + "test:build-canary": "rm -f pnpm-lock.yaml && pnpm rm nuxt && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From 7242f1dfac55eebd0a74f51083b6e0603ae243f4 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 12:05:12 +0100 Subject: [PATCH 06/15] add version overrides to cache hash --- scripts/dependency-hash-key.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/dependency-hash-key.js b/scripts/dependency-hash-key.js index 55e38e4a385e..4b57a7891463 100644 --- a/scripts/dependency-hash-key.js +++ b/scripts/dependency-hash-key.js @@ -47,6 +47,15 @@ function getNormalizedDependencies(packageJson, workspacePackageNames) { ...dependencies, }; + // Add a representation of version overrides to the hash parts + let overridesString = ''; + if (packageJson?.overrides) { + overridesString = JSON.stringify(packageJson.overrides); + } + if (packageJson?.pnpm && packageJson.pnpm.overrides) { + overridesString += JSON.stringify(packageJson.pnpm.overrides); + } + const normalizedDependencies = {}; // Sort the keys to ensure a consistent order @@ -59,7 +68,7 @@ function getNormalizedDependencies(packageJson, workspacePackageNames) { normalizedDependencies[key] = version; }); - return JSON.stringify(normalizedDependencies); + return JSON.stringify(normalizedDependencies) + overridesString; } function getWorkspacePackageNames(workspacePackages) { From 648cfd24352679616b9cc6b6df7e22713b6df76a Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 12:48:31 +0100 Subject: [PATCH 07/15] output cache key --- .github/actions/install-dependencies/action.yml | 4 ++++ scripts/dependency-hash-key.js | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index cfa664b1d219..5227afaedfb0 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -5,6 +5,9 @@ outputs: cache_key: description: 'The dependency cache key' value: ${{ steps.compute_lockfile_hash.outputs.hash }} + cache_key_all: + description: 'The dependency cache key without hashing' + value: ${{ steps.compute_lockfile_hash.outputs.nohash }} runs: using: 'composite' @@ -20,6 +23,7 @@ runs: with: path: ${{ env.CACHED_DEPENDENCY_PATHS }} key: ${{ steps.compute_lockfile_hash.outputs.hash }} + key-nohash: ${{ steps.compute_lockfile_hash.outputs.nohash }} - name: Install dependencies if: steps.cache_dependencies.outputs.cache-hit != 'true' diff --git a/scripts/dependency-hash-key.js b/scripts/dependency-hash-key.js index 4b57a7891463..028617091c28 100644 --- a/scripts/dependency-hash-key.js +++ b/scripts/dependency-hash-key.js @@ -32,11 +32,17 @@ function outputDependencyCacheKey() { hashParts.push(getNormalizedDependencies(packageJson, workspacePackageNames)); }); - const hash = crypto.createHash('md5').update(hashParts.join('\n')).digest('hex'); - // We log the output in a way that the GitHub Actions can append it to the output - // We prefix it with `dependencies-` so it is easier to identify in the logs - // eslint-disable-next-line no-console + // Create a truncated version of the raw data for debugging + // We don't want to output the full content as it could be very large + const rawData = hashParts.join('\n'); + const truncatedRawData = + rawData.length > 500 ? rawData.substring(0, 250) + '...' + rawData.substring(rawData.length - 250) : rawData; + + const hash = crypto.createHash('md5').update(rawData).digest('hex'); + + // Output both the hash and the raw data (truncated) console.log(`hash=dependencies-${hash}`); + console.log(`nohash=${encodeURIComponent(truncatedRawData)}`); } function getNormalizedDependencies(packageJson, workspacePackageNames) { From 5d9c27193608f7e956bdee7d3732ddcd14935db3 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 13:07:47 +0100 Subject: [PATCH 08/15] prune pnpm cache --- dev-packages/e2e-tests/test-applications/nuxt-4/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index fb21d24cbae2..5f68a9dceec7 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "rm -f pnpm-lock.yaml && pnpm rm nuxt && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install && pnpm build", + "test:build-canary": "pnpm store prune && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From a4bdb557b1f5b2627eeb37b634a046e837844db1 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 14:26:12 +0100 Subject: [PATCH 09/15] prune 2 --- dev-packages/e2e-tests/test-applications/nuxt-4/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index 5f68a9dceec7..caf45fe32c1b 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "pnpm store prune && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install && pnpm build", + "test:build-canary": "pnpm store prune && pnpm prune && pnpm install && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From 0d9247cc6528721167f704ba28e7c4d88ea2dcf8 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 15:11:44 +0100 Subject: [PATCH 10/15] force install --- dev-packages/e2e-tests/test-applications/nuxt-4/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index caf45fe32c1b..e0e38cfef942 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "pnpm store prune && pnpm prune && pnpm install && pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install && pnpm build", + "test:build-canary": "pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install --force && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From 4b0e73767d2ee787d2bd2e12ca3afb5faaea527d Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 15:35:49 +0100 Subject: [PATCH 11/15] debug stuff in script --- dev-packages/e2e-tests/test-applications/nuxt-4/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index e0e38cfef942..f69c11c19d9d 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "pnpm add nuxt@npm:nuxt-nightly@latest && pnpm install --force && pnpm build", + "test:build-canary": "echo \"Lock file location1: $(pwd)/pnpm-lock.yaml\" && pnpm add nuxt@npm:nuxt-nightly@latest && echo \"Lock file location2: $(pwd)/pnpm-lock.yaml\" && grep -i 'nitro' pnpm-lock.yaml && pnpm install --force && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From 11ae67c42da411aa00a67a4b5cdd04a1b727bf92 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 15:50:41 +0100 Subject: [PATCH 12/15] debug stuff in script 2 --- dev-packages/e2e-tests/test-applications/nuxt-3/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index c1f0272bdf03..9783a95901a1 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "pnpm install && pnpm rm nuxt && pnpm add nuxt@npm:nuxt-nightly@3x && pnpm build", + "test:build-canary": "echo \"Lock file location1: $(pwd)/pnpm-lock.yaml\" && pnpm add nuxt@npm:nuxt-nightly@latest && echo \"Lock file location2: $(pwd)/pnpm-lock.yaml\" && grep -i 'nitro' pnpm-lock.yaml && pnpm install --force && pnpm dedupe && grep -i 'nitro' pnpm-lock.yaml && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From 1ff0d209fd417364838a9fcb472e68705b4dd037 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 15:59:13 +0100 Subject: [PATCH 13/15] pnpm why --- dev-packages/e2e-tests/test-applications/nuxt-3/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index 9783a95901a1..c32bdd84ec83 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "echo \"Lock file location1: $(pwd)/pnpm-lock.yaml\" && pnpm add nuxt@npm:nuxt-nightly@latest && echo \"Lock file location2: $(pwd)/pnpm-lock.yaml\" && grep -i 'nitro' pnpm-lock.yaml && pnpm install --force && pnpm dedupe && grep -i 'nitro' pnpm-lock.yaml && pnpm build", + "test:build-canary": "echo \"Lock file location1: $(pwd)/pnpm-lock.yaml\" && pnpm add nuxt@npm:nuxt-nightly@3x && echo \"Lock file location2: $(pwd)/pnpm-lock.yaml\" && grep -i 'nitro' pnpm-lock.yaml && pnpm install --force && pnpm dedupe && grep -i 'nitro' pnpm-lock.yaml && pnpm why nitropack -r && pnpm build", "test:assert": "pnpm test" }, "dependencies": { From f4c7f97e8d071e741173dae6f8b54750c9d6eeac Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 17:11:14 +0100 Subject: [PATCH 14/15] fix installing of nitro and nuxt --- .../actions/install-dependencies/action.yml | 4 ---- .../test-applications/nuxt-3/package.json | 2 +- .../test-applications/nuxt-4/package.json | 2 +- scripts/dependency-hash-key.js | 21 +------------------ 4 files changed, 3 insertions(+), 26 deletions(-) diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index 5227afaedfb0..cfa664b1d219 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -5,9 +5,6 @@ outputs: cache_key: description: 'The dependency cache key' value: ${{ steps.compute_lockfile_hash.outputs.hash }} - cache_key_all: - description: 'The dependency cache key without hashing' - value: ${{ steps.compute_lockfile_hash.outputs.nohash }} runs: using: 'composite' @@ -23,7 +20,6 @@ runs: with: path: ${{ env.CACHED_DEPENDENCY_PATHS }} key: ${{ steps.compute_lockfile_hash.outputs.hash }} - key-nohash: ${{ steps.compute_lockfile_hash.outputs.nohash }} - name: Install dependencies if: steps.cache_dependencies.outputs.cache-hit != 'true' diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index c32bdd84ec83..a49a958ff1ee 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "echo \"Lock file location1: $(pwd)/pnpm-lock.yaml\" && pnpm add nuxt@npm:nuxt-nightly@3x && echo \"Lock file location2: $(pwd)/pnpm-lock.yaml\" && grep -i 'nitro' pnpm-lock.yaml && pnpm install --force && pnpm dedupe && grep -i 'nitro' pnpm-lock.yaml && pnpm why nitropack -r && pnpm build", + "test:build-canary": "pnpm add nuxt@npm:nuxt-nightly@3x && pnpm add nitropack@npm:nitropack-nightly@latest && pnpm install --force && pnpm build", "test:assert": "pnpm test" }, "dependencies": { diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index f69c11c19d9d..e3c7ec9c0a76 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,7 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", - "test:build-canary": "echo \"Lock file location1: $(pwd)/pnpm-lock.yaml\" && pnpm add nuxt@npm:nuxt-nightly@latest && echo \"Lock file location2: $(pwd)/pnpm-lock.yaml\" && grep -i 'nitro' pnpm-lock.yaml && pnpm install --force && pnpm build", + "test:build-canary": "pnpm add nuxt@npm:nuxt-nightly@latest && pnpm add nitropack@npm:nitropack-nightly@latest && pnpm install --force && pnpm build", "test:assert": "pnpm test" }, "dependencies": { diff --git a/scripts/dependency-hash-key.js b/scripts/dependency-hash-key.js index 028617091c28..f05c22cf6519 100644 --- a/scripts/dependency-hash-key.js +++ b/scripts/dependency-hash-key.js @@ -32,17 +32,7 @@ function outputDependencyCacheKey() { hashParts.push(getNormalizedDependencies(packageJson, workspacePackageNames)); }); - // Create a truncated version of the raw data for debugging - // We don't want to output the full content as it could be very large - const rawData = hashParts.join('\n'); - const truncatedRawData = - rawData.length > 500 ? rawData.substring(0, 250) + '...' + rawData.substring(rawData.length - 250) : rawData; - - const hash = crypto.createHash('md5').update(rawData).digest('hex'); - - // Output both the hash and the raw data (truncated) console.log(`hash=dependencies-${hash}`); - console.log(`nohash=${encodeURIComponent(truncatedRawData)}`); } function getNormalizedDependencies(packageJson, workspacePackageNames) { @@ -53,15 +43,6 @@ function getNormalizedDependencies(packageJson, workspacePackageNames) { ...dependencies, }; - // Add a representation of version overrides to the hash parts - let overridesString = ''; - if (packageJson?.overrides) { - overridesString = JSON.stringify(packageJson.overrides); - } - if (packageJson?.pnpm && packageJson.pnpm.overrides) { - overridesString += JSON.stringify(packageJson.pnpm.overrides); - } - const normalizedDependencies = {}; // Sort the keys to ensure a consistent order @@ -74,7 +55,7 @@ function getNormalizedDependencies(packageJson, workspacePackageNames) { normalizedDependencies[key] = version; }); - return JSON.stringify(normalizedDependencies) + overridesString; + return JSON.stringify(normalizedDependencies); } function getWorkspacePackageNames(workspacePackages) { From 90ed25ed51d77c73180ed39e1c1858ecc4b0bce7 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 17:12:38 +0100 Subject: [PATCH 15/15] put back code --- scripts/dependency-hash-key.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/dependency-hash-key.js b/scripts/dependency-hash-key.js index f05c22cf6519..55e38e4a385e 100644 --- a/scripts/dependency-hash-key.js +++ b/scripts/dependency-hash-key.js @@ -32,6 +32,10 @@ function outputDependencyCacheKey() { hashParts.push(getNormalizedDependencies(packageJson, workspacePackageNames)); }); + const hash = crypto.createHash('md5').update(hashParts.join('\n')).digest('hex'); + // We log the output in a way that the GitHub Actions can append it to the output + // We prefix it with `dependencies-` so it is easier to identify in the logs + // eslint-disable-next-line no-console console.log(`hash=dependencies-${hash}`); }