mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-27 18:46:18 -04:00
fix: in a workspace, also include missing deeply linked workspace packages at headless installation (#5220)
Co-authored-by: Zoltan Kochan <z@kochan.io> close #5034
This commit is contained in:
6
.changeset/new-vans-guess.md
Normal file
6
.changeset/new-vans-guess.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/headless": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
Also include missing deeply linked workspace packages at headless installation [#5034](https://github.com/pnpm/pnpm/issues/5034).
|
||||
5
.changeset/silly-walls-shave.md
Normal file
5
.changeset/silly-walls-shave.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/filter-lockfile": major
|
||||
---
|
||||
|
||||
Breaking change to the API. Also include missing deeply linked workspace packages at headless installation.
|
||||
5
fixtures/workspace-external-depends-deep/.npmrc
Normal file
5
fixtures/workspace-external-depends-deep/.npmrc
Normal file
@@ -0,0 +1,5 @@
|
||||
link-workspace-packages = deep
|
||||
prefer-workspace-packages = true
|
||||
shared-workspace-lockfile = true
|
||||
save-workspace-protocol = rolling
|
||||
registry=http://localhost:4873
|
||||
7
fixtures/workspace-external-depends-deep/package.json
Normal file
7
fixtures/workspace-external-depends-deep/package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "root",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"is-positive": "1.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@kenrick95/internal-f",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"is-positive": "1.0.0",
|
||||
"is-negative": "1.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "@kenrick95/internal-g",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@pnpm.e2e/external-depend-on-internal-dep": "1.0.0",
|
||||
"is-positive": "1.0.0"
|
||||
}
|
||||
}
|
||||
43
fixtures/workspace-external-depends-deep/pnpm-lock.yaml
generated
Normal file
43
fixtures/workspace-external-depends-deep/pnpm-lock.yaml
generated
Normal file
@@ -0,0 +1,43 @@
|
||||
lockfileVersion: 5.4
|
||||
|
||||
importers:
|
||||
|
||||
.:
|
||||
specifiers:
|
||||
is-positive: 1.0.0
|
||||
dependencies:
|
||||
is-positive: 1.0.0
|
||||
|
||||
packages/f:
|
||||
specifiers:
|
||||
is-negative: 1.0.0
|
||||
is-positive: 1.0.0
|
||||
dependencies:
|
||||
is-negative: 1.0.0
|
||||
is-positive: 1.0.0
|
||||
|
||||
packages/g:
|
||||
specifiers:
|
||||
'@pnpm.e2e/external-depend-on-internal-dep': 1.0.0
|
||||
is-positive: 1.0.0
|
||||
dependencies:
|
||||
'@pnpm.e2e/external-depend-on-internal-dep': 1.0.0
|
||||
is-positive: 1.0.0
|
||||
|
||||
packages:
|
||||
|
||||
/@pnpm.e2e/external-depend-on-internal-dep/1.0.0:
|
||||
resolution: {integrity: sha512-UPhSnFgg3p1acuOcuWgunypA7tTqhVCBUUC4laNotJw1RUbTldprdLJmrhOvGylvw4VBipHnXPm/y9wTIAf53A==}
|
||||
dependencies:
|
||||
'@pnpm.e2e/internal-f': link:packages/f
|
||||
dev: false
|
||||
|
||||
/is-negative/1.0.0:
|
||||
resolution: {integrity: sha512-1aKMsFUc7vYQGzt//8zhkjRWPoYkajY/I5MJEvrc0pDoHXrW7n5ri8DYxhy3rR+Dk0QFl7GjHHsZU1sppQrWtw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/is-positive/1.0.0:
|
||||
resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
@@ -0,0 +1,2 @@
|
||||
packages:
|
||||
- 'packages/**'
|
||||
@@ -39,7 +39,7 @@
|
||||
"@commitlint/prompt-cli": "^17.1.2",
|
||||
"@pnpm/eslint-config": "workspace:*",
|
||||
"@pnpm/meta-updater": "0.2.0",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/tsconfig": "workspace:*",
|
||||
"@types/jest": "^29.1.2",
|
||||
"@types/node": "^14.18.29",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"@pnpm/git-utils": "workspace:*",
|
||||
"@pnpm/package-store": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/store-path": "workspace:*",
|
||||
"@pnpm/test-fixtures": "workspace:*",
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
|
||||
@@ -29,30 +29,27 @@ export default function filterByImportersAndEngine (
|
||||
lockfileDir: string
|
||||
skipped: Set<string>
|
||||
}
|
||||
): Lockfile {
|
||||
const importerDeps = importerIds
|
||||
.map((importerId) => lockfile.importers[importerId])
|
||||
.map((importer) => ({
|
||||
...(opts.include.dependencies ? importer.dependencies : {}),
|
||||
...(opts.include.devDependencies ? importer.devDependencies : {}),
|
||||
...(opts.include.optionalDependencies ? importer.optionalDependencies : {}),
|
||||
}))
|
||||
.map(Object.entries)
|
||||
const directDepPaths = unnest(importerDeps)
|
||||
.map(([pkgName, ref]) => dp.refToRelative(ref, pkgName))
|
||||
.filter((nodeId) => nodeId !== null) as string[]
|
||||
): { lockfile: Lockfile, selectedImporterIds: string[] } {
|
||||
const importerIdSet = new Set(importerIds) as Set<string>
|
||||
|
||||
const packages = (lockfile.packages != null)
|
||||
? pickPkgsWithAllDeps(lockfile.packages, directDepPaths, {
|
||||
currentEngine: opts.currentEngine,
|
||||
engineStrict: opts.engineStrict,
|
||||
failOnMissingDependencies: opts.failOnMissingDependencies,
|
||||
include: opts.include,
|
||||
includeIncompatiblePackages: opts.includeIncompatiblePackages === true,
|
||||
lockfileDir: opts.lockfileDir,
|
||||
skipped: opts.skipped,
|
||||
})
|
||||
: {}
|
||||
const directDepPaths = toImporterDepPaths(lockfile, importerIds, {
|
||||
include: opts.include,
|
||||
importerIdSet,
|
||||
})
|
||||
|
||||
const packages =
|
||||
lockfile.packages != null
|
||||
? pickPkgsWithAllDeps(lockfile, directDepPaths, importerIdSet, {
|
||||
currentEngine: opts.currentEngine,
|
||||
engineStrict: opts.engineStrict,
|
||||
failOnMissingDependencies: opts.failOnMissingDependencies,
|
||||
include: opts.include,
|
||||
includeIncompatiblePackages:
|
||||
opts.includeIncompatiblePackages === true,
|
||||
lockfileDir: opts.lockfileDir,
|
||||
skipped: opts.skipped,
|
||||
})
|
||||
: {}
|
||||
|
||||
const importers = importerIds.reduce((acc, importerId) => {
|
||||
acc[importerId] = filterImporter(lockfile.importers[importerId], opts.include)
|
||||
@@ -68,15 +65,19 @@ export default function filterByImportersAndEngine (
|
||||
}, { ...lockfile.importers })
|
||||
|
||||
return {
|
||||
...lockfile,
|
||||
importers,
|
||||
packages,
|
||||
lockfile: {
|
||||
...lockfile,
|
||||
importers,
|
||||
packages,
|
||||
},
|
||||
selectedImporterIds: Array.from(importerIdSet),
|
||||
}
|
||||
}
|
||||
|
||||
function pickPkgsWithAllDeps (
|
||||
pkgSnapshots: PackageSnapshots,
|
||||
lockfile: Lockfile,
|
||||
depPaths: string[],
|
||||
importerIdSet: Set<string>,
|
||||
opts: {
|
||||
currentEngine: {
|
||||
nodeVersion: string
|
||||
@@ -91,14 +92,15 @@ function pickPkgsWithAllDeps (
|
||||
}
|
||||
) {
|
||||
const pickedPackages = {} as PackageSnapshots
|
||||
pkgAllDeps({ pkgSnapshots, pickedPackages }, depPaths, true, opts)
|
||||
pkgAllDeps({ lockfile, pickedPackages, importerIdSet }, depPaths, true, opts)
|
||||
return pickedPackages
|
||||
}
|
||||
|
||||
function pkgAllDeps (
|
||||
ctx: {
|
||||
pkgSnapshots: PackageSnapshots
|
||||
lockfile: Lockfile
|
||||
pickedPackages: PackageSnapshots
|
||||
importerIdSet: Set<string>
|
||||
},
|
||||
depPaths: string[],
|
||||
parentIsInstallable: boolean,
|
||||
@@ -117,7 +119,7 @@ function pkgAllDeps (
|
||||
) {
|
||||
for (const depPath of depPaths) {
|
||||
if (ctx.pickedPackages[depPath]) continue
|
||||
const pkgSnapshot = ctx.pkgSnapshots[depPath]
|
||||
const pkgSnapshot = ctx.lockfile.packages![depPath]
|
||||
if (!pkgSnapshot && !depPath.startsWith('link:')) {
|
||||
if (opts.failOnMissingDependencies) {
|
||||
throw new LockfileMissingDependencyError(depPath)
|
||||
@@ -140,13 +142,15 @@ function pkgAllDeps (
|
||||
libc: pkgSnapshot.libc,
|
||||
}
|
||||
// TODO: depPath is not the package ID. Should be fixed
|
||||
installable = opts.includeIncompatiblePackages || packageIsInstallable(pkgSnapshot.id ?? depPath, pkg, {
|
||||
engineStrict: opts.engineStrict,
|
||||
lockfileDir: opts.lockfileDir,
|
||||
nodeVersion: opts.currentEngine.nodeVersion,
|
||||
optional: pkgSnapshot.optional === true,
|
||||
pnpmVersion: opts.currentEngine.pnpmVersion,
|
||||
}) !== false
|
||||
installable =
|
||||
opts.includeIncompatiblePackages ||
|
||||
packageIsInstallable(pkgSnapshot.id ?? depPath, pkg, {
|
||||
engineStrict: opts.engineStrict,
|
||||
lockfileDir: opts.lockfileDir,
|
||||
nodeVersion: opts.currentEngine.nodeVersion,
|
||||
optional: pkgSnapshot.optional === true,
|
||||
pnpmVersion: opts.currentEngine.pnpmVersion,
|
||||
}) !== false
|
||||
if (!installable) {
|
||||
if (!ctx.pickedPackages[depPath] && pkgSnapshot.optional === true) {
|
||||
opts.skipped.add(depPath)
|
||||
@@ -156,14 +160,69 @@ function pkgAllDeps (
|
||||
}
|
||||
}
|
||||
ctx.pickedPackages[depPath] = pkgSnapshot
|
||||
const nextRelDepPaths = Object.entries(
|
||||
{
|
||||
...pkgSnapshot.dependencies,
|
||||
...(opts.include.optionalDependencies ? pkgSnapshot.optionalDependencies : {}),
|
||||
const { depPaths: nextRelDepPaths, importerIds: additionalImporterIds } = parseDepRefs(Object.entries({
|
||||
...pkgSnapshot.dependencies,
|
||||
...(opts.include.optionalDependencies
|
||||
? pkgSnapshot.optionalDependencies
|
||||
: {}),
|
||||
}), ctx.lockfile)
|
||||
additionalImporterIds.forEach((importerId) => ctx.importerIdSet.add(importerId))
|
||||
nextRelDepPaths.push(
|
||||
...toImporterDepPaths(ctx.lockfile, additionalImporterIds, {
|
||||
include: opts.include,
|
||||
importerIdSet: ctx.importerIdSet,
|
||||
})
|
||||
.map(([pkgName, ref]) => dp.refToRelative(ref, pkgName))
|
||||
.filter((nodeId) => nodeId !== null) as string[]
|
||||
|
||||
)
|
||||
pkgAllDeps(ctx, nextRelDepPaths, installable, opts)
|
||||
}
|
||||
}
|
||||
|
||||
function toImporterDepPaths (
|
||||
lockfile: Lockfile,
|
||||
importerIds: string[],
|
||||
opts: {
|
||||
include: { [dependenciesField in DependenciesField]: boolean }
|
||||
importerIdSet: Set<string>
|
||||
}
|
||||
): string[] {
|
||||
const importerDeps = importerIds
|
||||
.map(importerId => lockfile.importers[importerId])
|
||||
.map(importer => ({
|
||||
...(opts.include.dependencies ? importer.dependencies : {}),
|
||||
...(opts.include.devDependencies ? importer.devDependencies : {}),
|
||||
...(opts.include.optionalDependencies
|
||||
? importer.optionalDependencies
|
||||
: {}),
|
||||
}))
|
||||
.map(Object.entries)
|
||||
|
||||
const { depPaths, importerIds: nextImporterIds } = parseDepRefs(unnest(importerDeps), lockfile)
|
||||
|
||||
if (!nextImporterIds.length) {
|
||||
return depPaths
|
||||
}
|
||||
nextImporterIds.forEach((importerId) => {
|
||||
opts.importerIdSet.add(importerId)
|
||||
})
|
||||
return [
|
||||
...depPaths,
|
||||
...toImporterDepPaths(lockfile, nextImporterIds, opts),
|
||||
]
|
||||
}
|
||||
|
||||
function parseDepRefs (refsByPkgNames: Array<[string, string]>, lockfile: Lockfile) {
|
||||
return refsByPkgNames
|
||||
.reduce((acc, [pkgName, ref]) => {
|
||||
if (ref.startsWith('link:')) {
|
||||
const importerId = ref.substring(5)
|
||||
if (lockfile.importers[importerId]) {
|
||||
acc.importerIds.push(importerId)
|
||||
}
|
||||
return acc
|
||||
}
|
||||
const depPath = dp.refToRelative(ref, pkgName)
|
||||
if (depPath == null) return acc
|
||||
acc.depPaths.push(depPath)
|
||||
return acc
|
||||
}, { depPaths: [] as string[], importerIds: [] as string[] })
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ test('filterByImportersAndEngine(): skip packages that are not installable', ()
|
||||
}
|
||||
)
|
||||
|
||||
expect(filteredLockfile).toStrictEqual({
|
||||
expect(filteredLockfile.lockfile).toStrictEqual({
|
||||
importers: {
|
||||
'project-1': {
|
||||
dependencies: {
|
||||
@@ -298,7 +298,7 @@ test('filterByImportersAndEngine(): filter the packages that set os and cpu', ()
|
||||
}
|
||||
)
|
||||
|
||||
expect(filteredLockfile).toStrictEqual({
|
||||
expect(filteredLockfile.lockfile).toStrictEqual({
|
||||
importers: {
|
||||
'project-1': {
|
||||
dependencies: {
|
||||
@@ -466,7 +466,7 @@ test('filterByImportersAndEngine(): filter the packages that set libc', () => {
|
||||
}
|
||||
)
|
||||
|
||||
expect(filteredLockfile).toStrictEqual({
|
||||
expect(filteredLockfile.lockfile).toStrictEqual({
|
||||
importers: {
|
||||
'project-1': {
|
||||
dependencies: {
|
||||
@@ -537,4 +537,115 @@ test('filterByImportersAndEngine(): filter the packages that set libc', () => {
|
||||
},
|
||||
})
|
||||
expect(Array.from(skippedPackages)).toStrictEqual(['/preserve-existing-skipped/1.0.0', '/optional-dep/1.0.0', '/foo/1.0.0'])
|
||||
})
|
||||
})
|
||||
|
||||
test('filterByImportersAndEngine(): includes linked packages', () => {
|
||||
const filteredLockfile = filterLockfileByImportersAndEngine(
|
||||
{
|
||||
importers: {
|
||||
'project-1': {
|
||||
dependencies: {
|
||||
'project-2': 'link:project-2',
|
||||
},
|
||||
devDependencies: {
|
||||
},
|
||||
optionalDependencies: {
|
||||
},
|
||||
specifiers: {
|
||||
'project-2': '^1.0.0',
|
||||
},
|
||||
},
|
||||
'project-2': {
|
||||
dependencies: {
|
||||
'project-3': 'link:project-3',
|
||||
foo: '1.0.0',
|
||||
},
|
||||
specifiers: {
|
||||
foo: '^1.0.0',
|
||||
},
|
||||
},
|
||||
'project-3': {
|
||||
dependencies: {
|
||||
bar: '1.0.0',
|
||||
},
|
||||
specifiers: {
|
||||
bar: '^1.0.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
packages: {
|
||||
'/bar/1.0.0': {
|
||||
resolution: { integrity: '' },
|
||||
},
|
||||
'/foo/1.0.0': {
|
||||
resolution: { integrity: '' },
|
||||
},
|
||||
},
|
||||
},
|
||||
['project-1'],
|
||||
{
|
||||
currentEngine: {
|
||||
nodeVersion: '10.0.0',
|
||||
pnpmVersion: '2.0.0',
|
||||
},
|
||||
engineStrict: true,
|
||||
failOnMissingDependencies: true,
|
||||
include: {
|
||||
dependencies: true,
|
||||
devDependencies: true,
|
||||
optionalDependencies: true,
|
||||
},
|
||||
lockfileDir: process.cwd(),
|
||||
skipped: new Set(),
|
||||
}
|
||||
)
|
||||
|
||||
expect(filteredLockfile.lockfile).toStrictEqual({
|
||||
importers: {
|
||||
'project-1': {
|
||||
dependencies: {
|
||||
'project-2': 'link:project-2',
|
||||
},
|
||||
devDependencies: {
|
||||
},
|
||||
optionalDependencies: {
|
||||
},
|
||||
specifiers: {
|
||||
'project-2': '^1.0.0',
|
||||
},
|
||||
},
|
||||
'project-2': {
|
||||
dependencies: {
|
||||
'project-3': 'link:project-3',
|
||||
foo: '1.0.0',
|
||||
},
|
||||
specifiers: {
|
||||
foo: '^1.0.0',
|
||||
},
|
||||
},
|
||||
'project-3': {
|
||||
dependencies: {
|
||||
bar: '1.0.0',
|
||||
},
|
||||
specifiers: {
|
||||
bar: '^1.0.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
packages: {
|
||||
'/bar/1.0.0': {
|
||||
resolution: { integrity: '' },
|
||||
},
|
||||
'/foo/1.0.0': {
|
||||
resolution: { integrity: '' },
|
||||
},
|
||||
},
|
||||
})
|
||||
expect(filteredLockfile.selectedImporterIds).toStrictEqual([
|
||||
'project-1',
|
||||
'project-2',
|
||||
'project-3',
|
||||
])
|
||||
})
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"@pnpm/package-store": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/read-projects-context": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/store-path": "workspace:*",
|
||||
"@pnpm/test-fixtures": "workspace:*",
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
|
||||
@@ -240,10 +240,10 @@ export async function headlessInstall (opts: HeadlessOptions) {
|
||||
registries: opts.registries,
|
||||
skipped,
|
||||
}
|
||||
const importerIds = (opts.ignorePackageManifest === true || opts.nodeLinker === 'hoisted')
|
||||
const initialImporterIds = (opts.ignorePackageManifest === true || opts.nodeLinker === 'hoisted')
|
||||
? Object.keys(wantedLockfile.importers)
|
||||
: selectedProjects.map(({ id }) => id)
|
||||
const filteredLockfile = filterLockfileByImportersAndEngine(wantedLockfile, importerIds, {
|
||||
const { lockfile: filteredLockfile, selectedImporterIds: importerIds } = filterLockfileByImportersAndEngine(wantedLockfile, initialImporterIds, {
|
||||
...filterOpts,
|
||||
currentEngine: opts.currentEngine,
|
||||
engineStrict: opts.engineStrict,
|
||||
@@ -251,6 +251,18 @@ export async function headlessInstall (opts: HeadlessOptions) {
|
||||
includeIncompatiblePackages: opts.force,
|
||||
lockfileDir,
|
||||
})
|
||||
|
||||
// Update selectedProjects to add missing projects. importerIds will have the updated ids, found from deeply linked workspace projects
|
||||
const initialImporterIdSet = new Set(initialImporterIds)
|
||||
const missingIds = importerIds.filter((importerId) => !initialImporterIdSet.has(importerId))
|
||||
if (missingIds.length > 0) {
|
||||
for (const project of Object.values(opts.allProjects)) {
|
||||
if (missingIds.includes(project.id)) {
|
||||
selectedProjects.push(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const lockfileToDepGraphOpts = {
|
||||
...opts,
|
||||
importerIds,
|
||||
|
||||
@@ -831,3 +831,29 @@ test('installing in a workspace with node-linker=hoisted', async () => {
|
||||
function readPkgVersion (dir: string): string {
|
||||
return loadJsonFile.sync<{ version: string }>(path.join(dir, 'package.json')).version
|
||||
}
|
||||
|
||||
test('installing a package deeply installs all required dependencies', async () => {
|
||||
const workspaceFixture = f.prepare('workspace-external-depends-deep')
|
||||
const projects = [
|
||||
path.join(workspaceFixture),
|
||||
path.join(workspaceFixture, 'packages/f'),
|
||||
path.join(workspaceFixture, 'packages/g'),
|
||||
workspaceFixture,
|
||||
]
|
||||
|
||||
await headlessInstall(
|
||||
await testDefaults({
|
||||
lockfileDir: workspaceFixture,
|
||||
projects,
|
||||
selectedProjectDirs: [projects[2]],
|
||||
})
|
||||
)
|
||||
|
||||
for (const projectDir of projects) {
|
||||
if (projectDir === workspaceFixture) {
|
||||
continue
|
||||
}
|
||||
const projectAssertion = assertProject(projectDir)
|
||||
expect(projectAssertion.requireModule('is-positive')).toBeTruthy()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -28,7 +28,7 @@ export default async function testDefaults (
|
||||
let storeDir = opts?.storeDir ?? path.join(tmp, 'store')
|
||||
const cacheDir = path.join(tmp, 'cache')
|
||||
const lockfileDir = opts?.lockfileDir ?? process.cwd()
|
||||
const { include, pendingBuilds, projects, registries } = await readProjectsContext(
|
||||
const { include, pendingBuilds, projects } = await readProjectsContext(
|
||||
opts.projects
|
||||
? opts.projects.map((rootDir: string) => ({ rootDir }))
|
||||
: [
|
||||
@@ -75,12 +75,12 @@ export default async function testDefaults (
|
||||
version: '1.0.0',
|
||||
},
|
||||
pendingBuilds,
|
||||
selectedProjectDirs: projects.map((project) => project.rootDir),
|
||||
selectedProjectDirs: opts.selectedProjectDirs ?? projects.map((project) => project.rootDir),
|
||||
allProjects: fromPairs(
|
||||
await Promise.all(projects.map(async (project) => [project.rootDir, { ...project, manifest: await safeReadPackageFromDir(project.rootDir) }]))
|
||||
),
|
||||
rawConfig: {},
|
||||
registries: registries ?? {
|
||||
registries: {
|
||||
default: registry,
|
||||
},
|
||||
sideEffectsCache: true,
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
"@pnpm/client": "workspace:*",
|
||||
"@pnpm/create-cafs-store": "workspace:*",
|
||||
"@pnpm/package-requester": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/test-fixtures": "workspace:*",
|
||||
"@types/normalize-path": "^3.0.0",
|
||||
"@types/ramda": "0.28.15",
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
"@pnpm/lockfile-types": "workspace:*",
|
||||
"@pnpm/plugin-commands-deploy": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0"
|
||||
"@pnpm/registry-mock": "3.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@pnpm/cli-utils": "workspace:*",
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"@pnpm/modules-yaml": "workspace:*",
|
||||
"@pnpm/plugin-commands-installation": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/test-fixtures": "workspace:*",
|
||||
"@types/is-ci": "^3.0.0",
|
||||
"@types/proxyquire": "^1.3.28",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"@pnpm/plugin-commands-installation": "workspace:*",
|
||||
"@pnpm/plugin-commands-listing": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@types/ramda": "0.28.15",
|
||||
"execa": "npm:safe-execa@^0.1.2",
|
||||
"strip-ansi": "^6.0.1",
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"@pnpm/plugin-commands-installation": "workspace:*",
|
||||
"@pnpm/plugin-commands-outdated": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@types/ramda": "0.28.15",
|
||||
"@types/wrap-ansi": "^3.0.0",
|
||||
"@types/zkochan__table": "npm:@types/table@6.0.0"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"devDependencies": {
|
||||
"@pnpm/plugin-commands-patching": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@types/ramda": "0.28.15"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"@pnpm/filter-workspace-packages": "workspace:*",
|
||||
"@pnpm/plugin-commands-publishing": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@types/cross-spawn": "^6.0.2",
|
||||
"@types/is-ci": "^3.0.0",
|
||||
"@types/is-windows": "^1.0.0",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"@pnpm/filter-workspace-packages": "workspace:*",
|
||||
"@pnpm/plugin-commands-rebuild": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/test-fixtures": "workspace:*",
|
||||
"@types/ramda": "0.28.15",
|
||||
"@types/semver": "7.3.12",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"@pnpm/filter-workspace-packages": "workspace:*",
|
||||
"@pnpm/plugin-commands-script-runners": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@types/is-windows": "^1.0.0",
|
||||
"@types/ramda": "0.28.15",
|
||||
"is-windows": "^1.0.2",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"@pnpm/lockfile-file": "workspace:*",
|
||||
"@pnpm/plugin-commands-store": "workspace:*",
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@types/archy": "0.0.32",
|
||||
"@types/ramda": "0.28.15",
|
||||
"@types/ssri": "^7.1.1",
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
"@pnpm/prepare": "workspace:*",
|
||||
"@pnpm/read-package-json": "workspace:*",
|
||||
"@pnpm/read-project-manifest": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/run-npm": "workspace:*",
|
||||
"@pnpm/tabtab": "^0.1.2",
|
||||
"@pnpm/types": "workspace:*",
|
||||
|
||||
102
pnpm-lock.yaml
generated
102
pnpm-lock.yaml
generated
@@ -59,8 +59,8 @@ importers:
|
||||
specifier: 0.2.0
|
||||
version: 0.2.0_typanion@3.12.0
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/tsconfig':
|
||||
specifier: workspace:*
|
||||
version: link:utils/tsconfig
|
||||
@@ -726,8 +726,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/store-path':
|
||||
specifier: workspace:*
|
||||
version: link:../store-path
|
||||
@@ -1655,8 +1655,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../read-projects-context
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/store-path':
|
||||
specifier: workspace:*
|
||||
version: link:../store-path
|
||||
@@ -2795,8 +2795,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: 'link:'
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/test-fixtures
|
||||
@@ -3094,8 +3094,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
|
||||
packages/plugin-commands-env:
|
||||
dependencies:
|
||||
@@ -3361,8 +3361,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/test-fixtures
|
||||
@@ -3461,8 +3461,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@types/ramda':
|
||||
specifier: 0.28.15
|
||||
version: 0.28.15
|
||||
@@ -3558,8 +3558,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@types/ramda':
|
||||
specifier: 0.28.15
|
||||
version: 0.28.15
|
||||
@@ -3625,8 +3625,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@types/ramda':
|
||||
specifier: 0.28.15
|
||||
version: 0.28.15
|
||||
@@ -3725,8 +3725,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@types/cross-spawn':
|
||||
specifier: ^6.0.2
|
||||
version: 6.0.2
|
||||
@@ -3879,8 +3879,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/test-fixtures
|
||||
@@ -3985,8 +3985,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@types/is-windows':
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
@@ -4174,8 +4174,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../privatePackages/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@types/archy':
|
||||
specifier: 0.0.32
|
||||
version: 0.0.32
|
||||
@@ -4205,7 +4205,7 @@ importers:
|
||||
optionalDependencies:
|
||||
node-gyp:
|
||||
specifier: ^9.2.0
|
||||
version: 9.2.0
|
||||
version: 9.3.0
|
||||
devDependencies:
|
||||
'@pnpm/assert-project':
|
||||
specifier: workspace:*
|
||||
@@ -4319,8 +4319,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../read-project-manifest
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/run-npm':
|
||||
specifier: workspace:*
|
||||
version: link:../run-npm
|
||||
@@ -5225,8 +5225,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/modules-yaml
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
'@pnpm/types':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/types
|
||||
@@ -5265,8 +5265,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/cafs
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0_typanion@3.12.0
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0_typanion@3.12.0
|
||||
path-exists:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
@@ -7698,8 +7698,8 @@ packages:
|
||||
- typanion
|
||||
dev: true
|
||||
|
||||
/@pnpm/registry-mock/3.0.0_typanion@3.12.0:
|
||||
resolution: {integrity: sha512-/e6P2sVX+1frYDl7z4qAnRHEU2VG4RUu4vcsoSZdc9LFi93ZxQ9gbuF066aR+T3S+JcFFjHNZXfJUj8ZaTfssg==}
|
||||
/@pnpm/registry-mock/3.1.0_typanion@3.12.0:
|
||||
resolution: {integrity: sha512-uOWJxzqNOutPbeH+yQW+cYwg0yM1eCdaMWstlIVjBCCoJ2IEpwsi3KhQnCDmMKZbqqUdPDcHTQaYzMKVG0WAFQ==}
|
||||
engines: {node: '>=10.13'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@@ -7977,7 +7977,7 @@ packages:
|
||||
/@types/byline/4.2.33:
|
||||
resolution: {integrity: sha512-LJYez7wrWcJQQDknqZtrZuExMGP0IXmPl1rOOGDqLbu+H7UNNRfKNuSxCBcQMLH1EfjeWidLedC/hCc5dDfBog==}
|
||||
dependencies:
|
||||
'@types/node': 18.8.4
|
||||
'@types/node': 18.8.5
|
||||
dev: true
|
||||
|
||||
/@types/cacheable-request/6.0.2:
|
||||
@@ -8132,6 +8132,10 @@ packages:
|
||||
/@types/node/18.8.4:
|
||||
resolution: {integrity: sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow==}
|
||||
|
||||
/@types/node/18.8.5:
|
||||
resolution: {integrity: sha512-Bq7G3AErwe5A/Zki5fdD3O6+0zDChhg671NfPjtIcbtzDNZTv4NPKMRFr7gtYPG7y+B8uTiNK4Ngd9T0FTar6Q==}
|
||||
dev: true
|
||||
|
||||
/@types/normalize-package-data/2.4.1:
|
||||
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
|
||||
dev: true
|
||||
@@ -9889,7 +9893,7 @@ packages:
|
||||
hasBin: true
|
||||
dependencies:
|
||||
graceful-fs: 4.2.10
|
||||
minimist: 1.2.6
|
||||
minimist: 1.2.7
|
||||
mkdirp: 0.5.6
|
||||
rimraf: 2.7.1
|
||||
|
||||
@@ -10076,8 +10080,8 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/decimal.js/10.4.1:
|
||||
resolution: {integrity: sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==}
|
||||
/decimal.js/10.4.2:
|
||||
resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==}
|
||||
|
||||
/decompress-maybe/1.0.0:
|
||||
resolution: {integrity: sha512-av8/KhXWRUYQ7lGTl/9Gtizz3nQ+7NqDFm/I4Lx+JvTbzHiD4WqfqxMO4YYi91FTqffoBDCYPfIvofwQZwZ3ZQ==}
|
||||
@@ -11728,7 +11732,7 @@ packages:
|
||||
engines: {node: '>=0.4.7'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
minimist: 1.2.6
|
||||
minimist: 1.2.7
|
||||
neo-async: 2.6.2
|
||||
source-map: 0.6.1
|
||||
wordwrap: 1.0.0
|
||||
@@ -12857,7 +12861,7 @@ packages:
|
||||
cssom: 0.4.4
|
||||
cssstyle: 2.3.0
|
||||
data-urls: 2.0.0
|
||||
decimal.js: 10.4.1
|
||||
decimal.js: 10.4.2
|
||||
domexception: 2.0.1
|
||||
escodegen: 2.0.0
|
||||
form-data: 3.0.1
|
||||
@@ -13612,6 +13616,9 @@ packages:
|
||||
/minimist/1.2.6:
|
||||
resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
|
||||
|
||||
/minimist/1.2.7:
|
||||
resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
|
||||
|
||||
/minipass-collect/1.0.2:
|
||||
resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
|
||||
engines: {node: '>= 8'}
|
||||
@@ -13699,7 +13706,7 @@ packages:
|
||||
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
minimist: 1.2.6
|
||||
minimist: 1.2.7
|
||||
|
||||
/mkdirp/1.0.4:
|
||||
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
|
||||
@@ -13880,8 +13887,8 @@ packages:
|
||||
- bluebird
|
||||
- supports-color
|
||||
|
||||
/node-gyp/9.2.0:
|
||||
resolution: {integrity: sha512-/+/YxGfIJOh/fnMsr4Ep0v6oOIjnO1BgLd2dcDspBX1spTkQU7xSIox5RdRE/2/Uq3ZwK8Z5swRIbMUmPlslmg==}
|
||||
/node-gyp/9.3.0:
|
||||
resolution: {integrity: sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==}
|
||||
engines: {node: ^12.22 || ^14.13 || >=16}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
@@ -14034,6 +14041,7 @@ packages:
|
||||
|
||||
/npmlog/4.1.2:
|
||||
resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
are-we-there-yet: 1.1.7
|
||||
console-control-strings: 1.1.0
|
||||
@@ -14370,7 +14378,7 @@ packages:
|
||||
fs-extra: 7.0.1
|
||||
is-ci: 2.0.0
|
||||
klaw-sync: 6.0.0
|
||||
minimist: 1.2.6
|
||||
minimist: 1.2.7
|
||||
open: 7.4.2
|
||||
rimraf: 2.7.1
|
||||
semver: 5.7.1
|
||||
@@ -17132,7 +17140,7 @@ time:
|
||||
/@pnpm/npm-package-arg/1.0.0: '2022-06-28T12:48:31.287Z'
|
||||
/@pnpm/os.env.path-extender/0.2.6: '2022-08-08T10:36:30.986Z'
|
||||
/@pnpm/ramda/0.28.1: '2022-08-03T13:56:59.597Z'
|
||||
/@pnpm/registry-mock/3.0.0: '2022-09-04T20:12:48.942Z'
|
||||
/@pnpm/registry-mock/3.1.0: '2022-10-13T19:59:17.408Z'
|
||||
/@pnpm/semver-diff/1.1.0: '2021-11-16T12:40:59.941Z'
|
||||
/@pnpm/tabtab/0.1.2: '2021-03-05T17:31:19.932Z'
|
||||
/@types/adm-zip/0.4.34: '2021-04-04T18:01:23.318Z'
|
||||
@@ -17261,7 +17269,7 @@ time:
|
||||
/micromatch/4.0.5: '2022-03-24T19:31:47.722Z'
|
||||
/nock/13.2.9: '2022-07-19T18:34:55.582Z'
|
||||
/node-fetch/3.0.0-beta.9: '2020-09-05T12:52:27.791Z'
|
||||
/node-gyp/9.2.0: '2022-10-04T10:40:24.552Z'
|
||||
/node-gyp/9.3.0: '2022-10-11T04:54:21.968Z'
|
||||
/normalize-newline/3.0.0: '2016-09-06T12:35:43.571Z'
|
||||
/normalize-package-data/4.0.1: '2022-08-15T21:03:50.558Z'
|
||||
/normalize-path/3.0.0: '2018-04-19T14:54:47.609Z'
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"@pnpm/constants": "workspace:*",
|
||||
"@pnpm/lockfile-types": "workspace:*",
|
||||
"@pnpm/modules-yaml": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"@pnpm/types": "workspace:*",
|
||||
"is-windows": "^1.0.2",
|
||||
"isexe": "2.0.0",
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@pnpm/cafs": "workspace:*",
|
||||
"@pnpm/registry-mock": "3.0.0",
|
||||
"@pnpm/registry-mock": "3.1.0",
|
||||
"path-exists": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user