mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-28 02:53:15 -04:00
feat: support check more invalid workspace file (#10319)
close #10313 --------- Co-authored-by: Zoltan Kochan <z@kochan.io>
This commit is contained in:
5
.changeset/honest-radios-cut.md
Normal file
5
.changeset/honest-radios-cut.md
Normal file
@@ -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`.
|
||||||
@@ -63,19 +63,31 @@ test('no projects found', async () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
test('incorrect workspace manifest', async () => {
|
const invalidWorkspaceManifests = [
|
||||||
preparePackages([
|
'pnpm-workspaces.yaml',
|
||||||
{
|
'pnpm-workspaces.yml',
|
||||||
name: 'project',
|
'pnpm-workspace.yml',
|
||||||
version: '1.0.0',
|
'.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'])
|
writeYamlFile(filename, { packages: ['**', '!store/**'] })
|
||||||
expect(stderr.toString()).toMatch(/The workspace manifest file should be named "pnpm-workspace.yaml"/)
|
|
||||||
expect(status).toBe(1)
|
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 () => {
|
test('linking a package inside a monorepo with --link-workspace-packages when installing new dependencies', async () => {
|
||||||
|
|||||||
@@ -5,7 +5,15 @@ import { findUp } from 'find-up'
|
|||||||
|
|
||||||
const WORKSPACE_DIR_ENV_VAR = 'NPM_CONFIG_WORKSPACE_DIR'
|
const WORKSPACE_DIR_ENV_VAR = 'NPM_CONFIG_WORKSPACE_DIR'
|
||||||
const WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml'
|
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<string | undefined> {
|
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 workspaceManifestDirEnvVar = process.env[WORKSPACE_DIR_ENV_VAR] ?? process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()]
|
||||||
|
|||||||
Reference in New Issue
Block a user