diff --git a/.changeset/honest-radios-cut.md b/.changeset/honest-radios-cut.md new file mode 100644 index 0000000000..07a8438cbc --- /dev/null +++ b/.changeset/honest-radios-cut.md @@ -0,0 +1,5 @@ +--- +"@pnpm/find-workspace-dir": patch +--- + +Throw an error message if a `.pnpm-workspace.yaml` or `.pnpm-workspace.yml` file is found instead of a `pnpm-workspace.yaml`. diff --git a/pnpm/test/monorepo/index.ts b/pnpm/test/monorepo/index.ts index a25cdd1a3d..07339ca830 100644 --- a/pnpm/test/monorepo/index.ts +++ b/pnpm/test/monorepo/index.ts @@ -61,19 +61,31 @@ test('no projects found', async () => { } }) -test('incorrect workspace manifest', async () => { - preparePackages([ - { - name: 'project', - version: '1.0.0', - }, - ]) +const invalidWorkspaceManifests = [ + 'pnpm-workspaces.yaml', + 'pnpm-workspaces.yml', + 'pnpm-workspace.yml', + '.pnpm-workspaces.yaml', + '.pnpm-workspaces.yml', + '.pnpm-workspace.yml', + '.pnpm-workspace.yaml', +] - writeYamlFile('pnpm-workspace.yml', { packages: ['**', '!store/**'] }) +invalidWorkspaceManifests.forEach((filename) => { + test('incorrect workspace manifest ' + filename, async () => { + preparePackages([ + { + name: 'project', + version: '1.0.0', + }, + ]) - const { status, stderr } = execPnpmSync(['install']) - expect(stderr.toString()).toMatch(/The workspace manifest file should be named "pnpm-workspace.yaml"/) - expect(status).toBe(1) + writeYamlFile(filename, { packages: ['**', '!store/**'] }) + + const { status, stderr } = execPnpmSync(['install']) + expect(stderr.toString()).toMatch(/The workspace manifest file should be named "pnpm-workspace.yaml"/) + expect(status).toBe(1) + }) }) test('linking a package inside a monorepo with --link-workspace-packages when installing new dependencies', async () => { diff --git a/workspace/find-workspace-dir/src/index.ts b/workspace/find-workspace-dir/src/index.ts index 480d6f01fa..f98f36d7ab 100644 --- a/workspace/find-workspace-dir/src/index.ts +++ b/workspace/find-workspace-dir/src/index.ts @@ -5,7 +5,15 @@ 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'] +const INVALID_WORKSPACE_MANIFEST_FILENAME = [ + 'pnpm-workspaces.yaml', + 'pnpm-workspaces.yml', + 'pnpm-workspace.yml', + '.pnpm-workspace.yaml', + '.pnpm-workspace.yml', + '.pnpm-workspaces.yaml', + '.pnpm-workspaces.yml', +] export async function findWorkspaceDir (cwd: string): Promise { const workspaceManifestDirEnvVar = process.env[WORKSPACE_DIR_ENV_VAR] ?? process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()]