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

close #9170
This commit is contained in:
btea authored and GitHub committed 2025-02-26 12:21:11 +01:00
1 parent 1c2eb8c311
commit 69f922a750
2 files changed
+10 -3

No files matched your search

+6
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).
+4 -3
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)