mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-23 00:17:57 -04:00
Update all packages from zkochan/packages to their latest major versions and exclude them from minimumReleaseAge requirement. This includes updating catalog entries, adapting to breaking API changes (default exports replaced with named exports, sync functions renamed with Sync suffix), and updating type declarations.
179 lines
4.2 KiB
TypeScript
179 lines
4.2 KiB
TypeScript
import path from 'path'
|
|
import { filterPackagesFromDir } from '@pnpm/workspace.filter-packages-from-dir'
|
|
import type { LockfileObject } from '@pnpm/lockfile.types'
|
|
import { add } from '@pnpm/plugin-commands-installation'
|
|
import { preparePackages } from '@pnpm/prepare'
|
|
import type { ProjectId } from '@pnpm/types'
|
|
import { readYamlFileSync } from 'read-yaml-file'
|
|
import { DEFAULT_OPTS } from './utils/index.js'
|
|
|
|
test('recursive add --save-dev, --save-peer on workspace with multiple lockfiles', async () => {
|
|
const projects = preparePackages([
|
|
{
|
|
name: 'project-1',
|
|
version: '1.0.0',
|
|
},
|
|
{
|
|
name: 'project-2',
|
|
version: '1.0.0',
|
|
},
|
|
])
|
|
|
|
const { allProjects, selectedProjectsGraph } = await filterPackagesFromDir(process.cwd(), [])
|
|
|
|
await add.handler({
|
|
...DEFAULT_OPTS,
|
|
allProjects,
|
|
dir: process.cwd(),
|
|
recursive: true,
|
|
saveDev: true,
|
|
selectedProjectsGraph,
|
|
workspaceDir: process.cwd(),
|
|
}, ['is-positive@1.0.0'])
|
|
await add.handler({
|
|
...DEFAULT_OPTS,
|
|
allProjects,
|
|
dir: process.cwd(),
|
|
recursive: true,
|
|
savePeer: true,
|
|
selectedProjectsGraph,
|
|
workspaceDir: process.cwd(),
|
|
}, ['is-negative@1.0.0'])
|
|
|
|
{
|
|
const { default: manifest } = (await import(path.resolve('project-1/package.json')))
|
|
expect(
|
|
manifest.devDependencies
|
|
).toEqual(
|
|
{ 'is-positive': '1.0.0', 'is-negative': '1.0.0' }
|
|
)
|
|
expect(
|
|
manifest.peerDependencies
|
|
).toEqual(
|
|
{ 'is-negative': '1.0.0' }
|
|
)
|
|
expect(
|
|
projects['project-1'].readLockfile().importers['.'].devDependencies
|
|
).toEqual(
|
|
{
|
|
'is-positive': {
|
|
specifier: '1.0.0',
|
|
version: '1.0.0',
|
|
},
|
|
'is-negative': {
|
|
specifier: '1.0.0',
|
|
version: '1.0.0',
|
|
},
|
|
}
|
|
)
|
|
}
|
|
|
|
{
|
|
const { default: manifest } = (await import(path.resolve('project-2/package.json')))
|
|
expect(
|
|
manifest.devDependencies
|
|
).toEqual(
|
|
{ 'is-positive': '1.0.0', 'is-negative': '1.0.0' }
|
|
)
|
|
expect(
|
|
manifest.peerDependencies
|
|
).toEqual(
|
|
{ 'is-negative': '1.0.0' }
|
|
)
|
|
expect(
|
|
projects['project-2'].readLockfile().importers['.'].devDependencies
|
|
).toEqual(
|
|
{
|
|
'is-positive': {
|
|
specifier: '1.0.0',
|
|
version: '1.0.0',
|
|
},
|
|
'is-negative': {
|
|
specifier: '1.0.0',
|
|
version: '1.0.0',
|
|
},
|
|
}
|
|
)
|
|
}
|
|
})
|
|
|
|
test('recursive add --save-dev, --save-peer on workspace with single lockfile', async () => {
|
|
preparePackages([
|
|
{
|
|
name: 'project-1',
|
|
version: '1.0.0',
|
|
},
|
|
{
|
|
name: 'project-2',
|
|
version: '1.0.0',
|
|
},
|
|
])
|
|
|
|
const { allProjects, selectedProjectsGraph } = await filterPackagesFromDir(process.cwd(), [])
|
|
|
|
await add.handler({
|
|
...DEFAULT_OPTS,
|
|
allProjects,
|
|
dir: process.cwd(),
|
|
lockfileDir: process.cwd(),
|
|
recursive: true,
|
|
saveDev: true,
|
|
selectedProjectsGraph,
|
|
workspaceDir: process.cwd(),
|
|
}, ['is-positive@1.0.0'])
|
|
await add.handler({
|
|
...DEFAULT_OPTS,
|
|
allProjects,
|
|
dir: process.cwd(),
|
|
lockfileDir: process.cwd(),
|
|
recursive: true,
|
|
savePeer: true,
|
|
selectedProjectsGraph,
|
|
workspaceDir: process.cwd(),
|
|
}, ['is-negative@1.0.0'])
|
|
|
|
{
|
|
const { default: manifest } = (await import(path.resolve('project-1/package.json')))
|
|
expect(
|
|
manifest.devDependencies
|
|
).toEqual(
|
|
{ 'is-positive': '1.0.0', 'is-negative': '1.0.0' }
|
|
)
|
|
expect(
|
|
manifest.peerDependencies
|
|
).toEqual(
|
|
{ 'is-negative': '1.0.0' }
|
|
)
|
|
}
|
|
|
|
{
|
|
const { default: manifest } = (await import(path.resolve('project-2/package.json')))
|
|
expect(
|
|
manifest.devDependencies
|
|
).toEqual(
|
|
{ 'is-positive': '1.0.0', 'is-negative': '1.0.0' }
|
|
)
|
|
expect(
|
|
manifest.peerDependencies
|
|
).toEqual(
|
|
{ 'is-negative': '1.0.0' }
|
|
)
|
|
}
|
|
|
|
const lockfile = readYamlFileSync<LockfileObject>('./pnpm-lock.yaml')
|
|
expect(
|
|
lockfile.importers['project-1' as ProjectId].devDependencies
|
|
).toEqual(
|
|
{
|
|
'is-positive': {
|
|
specifier: '1.0.0',
|
|
version: '1.0.0',
|
|
},
|
|
'is-negative': {
|
|
specifier: '1.0.0',
|
|
version: '1.0.0',
|
|
},
|
|
}
|
|
)
|
|
})
|