Problem
The following test is supposed to check if pnpm-workspace.yaml is present at ./test/pnpm-workspace/pnpm-workspace.yaml:
|
test('prefer pnpm inside a pnpm workspace', async t => { |
|
const pm = await preferredPM(path.join(__dirname, 'pnpm-workspace/packages/pkg')) |
|
t.deepEqual(pm, { name: 'pnpm', version: '>=3' }) |
|
t.end() |
|
}) |
However, the source is actually looking up for pnpm-lock.yaml:
|
const { findUp } = await import('find-up-simple') |
|
if (await findUp('pnpm-lock.yaml', { cwd: pkgPath })) { |
|
return { |
|
name: 'pnpm', |
|
version: '>=3' |
|
} |
|
} |
If you delete this monorepo's pnpm-lock.yaml, the test fails.
Solution
Ideally, this package should look up the directory tree for either pnpm-lock.yaml or pnpm-workspace.yaml:
const { findUp } = await import('find-up-simple')
if (await findUp('pnpm-lock.yaml', { cwd: pkgPath }) || await findUp('pnpm-workspace.yaml', { cwd: pkgPath })) {
...
}
// alternatively can use findUpSync
const { findUpSync } = await import('find-up-simple')
if (findUpSync('pnpm-lock.yaml', { cwd: pkgPath }) || findUpSync('pnpm-workspace.yaml', { cwd: pkgPath })) {
...
}
Something similar could probably be done for checking for root-level package-lock.json or yarn.lock too.
Problem
The following test is supposed to check if
pnpm-workspace.yamlis present at./test/pnpm-workspace/pnpm-workspace.yaml:packages/preferred-pm/test/index.js
Lines 38 to 42 in 2b2c832
However, the source is actually looking up for
pnpm-lock.yaml:packages/preferred-pm/index.js
Lines 41 to 47 in 2b2c832
If you delete this monorepo's
pnpm-lock.yaml, the test fails.Solution
Ideally, this package should look up the directory tree for either
pnpm-lock.yamlorpnpm-workspace.yaml:Something similar could probably be done for checking for root-level
package-lock.jsonoryarn.locktoo.