From eec7aa39e658010fe9211b943841c896ac40e69e Mon Sep 17 00:00:00 2001 From: Michal Piechowiak Date: Mon, 13 Oct 2025 16:58:11 +0200 Subject: [PATCH] test: adjust netlify-deploy for non-flat workspaces directories --- .../test/support/netlify-deploy.ts | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/vite-plugin-tanstack-start/test/support/netlify-deploy.ts b/packages/vite-plugin-tanstack-start/test/support/netlify-deploy.ts index be72b86d..251c3aca 100644 --- a/packages/vite-plugin-tanstack-start/test/support/netlify-deploy.ts +++ b/packages/vite-plugin-tanstack-start/test/support/netlify-deploy.ts @@ -1,5 +1,5 @@ import { exec as originalExec } from 'node:child_process' -import { writeFile, readFile, readdir } from 'node:fs/promises' +import { writeFile, readFile } from 'node:fs/promises' import { join } from 'node:path' import { URL } from 'node:url' import { promisify } from 'node:util' @@ -8,6 +8,8 @@ import normalizePackageData, { type Package } from 'normalize-package-data' const exec = promisify(originalExec) +type MonorepoPackage = Package & { workspaces?: string[] } + // https://app.netlify.com/sites/tanstack-start-e2e-tests const SITE_ID = process.env.NETLIFY_SITE_ID ?? 'cd4e45ce-895c-432b-af6d-61e10ad1d125' @@ -17,13 +19,15 @@ export interface Deploy { logs: string } -const packagesRootDir = join(import.meta.dirname, '../../../') -const packageDirs = await readdir(packagesRootDir) +const repoRoot = join(import.meta.dirname, '../../../../') +const workspaces = + (JSON.parse(await readFile(join(repoRoot, 'package.json'), 'utf-8')) as MonorepoPackage).workspaces ?? [] + const packages = await Promise.all( - packageDirs.map(async (dirName) => { - const packageJsonPath = join(packagesRootDir, dirName, 'package.json') + workspaces.map(async (packageDir) => { + const packageJsonPath = join(repoRoot, packageDir, 'package.json') const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf-8')) as Package - return { name: packageJson.name, dirName } + return { name: packageJson.name, packageDir } }), ) @@ -33,7 +37,7 @@ const packages = await Promise.all( * We can't use a simpler approach like a monorepo workspace or `npm link` because the fixture site * needs to be self-contained to be deployable to Netlify (i.e. it can't have symlinks). */ -const prepareDeps = async (cwd: string, packagesAbsoluteDir: string): Promise => { +const prepareDeps = async (cwd: string): Promise => { const packageJson = JSON.parse(await readFile(`${cwd}/package.json`, 'utf-8')) as Package & { overrides?: Record } @@ -45,7 +49,7 @@ const prepareDeps = async (cwd: string, packagesAbsoluteDir: string): Promise => { - await prepareDeps(projectDir, join(import.meta.dirname, '../../../')) + await prepareDeps(projectDir) console.log(`🚀 Building and deploying site...`) try {