feat: support check more invalid workspace file (#9173)

close #9170
This commit is contained in:
btea
2025-02-26 19:21:11 +08:00
committed by GitHub
parent 1c2eb8c311
commit 69f922a750
2 changed files with 10 additions and 3 deletions

View File

@@ -0,0 +1,6 @@
---
"@pnpm/find-workspace-dir": minor
"pnpm": patch
---
Throw an error message if a `pnpm-workspaces.yaml` or `pnpm-workspaces.yml` file is found instead of a `pnpm-workspace.yaml` [#9170](https://github.com/pnpm/pnpm/issues/9170).

View File

@@ -5,13 +5,14 @@ import findUp from 'find-up'
const WORKSPACE_DIR_ENV_VAR = 'NPM_CONFIG_WORKSPACE_DIR'
const WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml'
const INVALID_WORKSPACE_MANIFEST_FILENAME = ['pnpm-workspaces.yaml', 'pnpm-workspaces.yml', 'pnpm-workspace.yml']
export async function findWorkspaceDir (cwd: string): Promise<string | undefined> {
const workspaceManifestDirEnvVar = process.env[WORKSPACE_DIR_ENV_VAR] ?? process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()]
const workspaceManifestLocation = workspaceManifestDirEnvVar
? path.join(workspaceManifestDirEnvVar, 'pnpm-workspace.yaml')
: await findUp([WORKSPACE_MANIFEST_FILENAME, 'pnpm-workspace.yml'], { cwd: await getRealPath(cwd) })
if (workspaceManifestLocation?.endsWith('.yml')) {
? path.join(workspaceManifestDirEnvVar, WORKSPACE_MANIFEST_FILENAME)
: await findUp([WORKSPACE_MANIFEST_FILENAME, ...INVALID_WORKSPACE_MANIFEST_FILENAME], { cwd: await getRealPath(cwd) })
if (workspaceManifestLocation && path.basename(workspaceManifestLocation) !== WORKSPACE_MANIFEST_FILENAME) {
throw new PnpmError('BAD_WORKSPACE_MANIFEST_NAME', `The workspace manifest file should be named "pnpm-workspace.yaml". File found: ${workspaceManifestLocation}`)
}
return workspaceManifestLocation && path.dirname(workspaceManifestLocation)