mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-10 18:18:56 -04:00
fix: lockfile not updated when remove dependency in project with readPackage hook
Co-authored-by: qdl <levinqdl@magicengine.com.cn> PR #2726
This commit is contained in:
6
.changeset/cold-feet-arrive.md
Normal file
6
.changeset/cold-feet-arrive.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"pnpm": patch
|
||||
"supi": patch
|
||||
---
|
||||
|
||||
fix lockfile not updated when remove dependency in project with readPackage hook
|
||||
@@ -14,8 +14,10 @@ test('readPackage hook in single project doesn\'t modify manifest', async (t) =>
|
||||
const pnpmfile = `
|
||||
module.exports = { hooks: { readPackage } }
|
||||
function readPackage (pkg) {
|
||||
pkg.dependencies = pkg.dependencies || {}
|
||||
pkg.dependencies['dep-of-pkg-with-1-dep'] = '100.1.0'
|
||||
if (pkg.name === 'project') {
|
||||
pkg.dependencies = pkg.dependencies || {}
|
||||
pkg.dependencies['dep-of-pkg-with-1-dep'] = '100.1.0'
|
||||
}
|
||||
return pkg
|
||||
}
|
||||
`
|
||||
@@ -36,9 +38,10 @@ test('readPackage hook in single project doesn\'t modify manifest', async (t) =>
|
||||
await execPnpm(['remove', 'is-positive'])
|
||||
pkg = await loadJsonFile(path.resolve('package.json'))
|
||||
t.notOk(pkg.dependencies, 'remove & readPackage hook work')
|
||||
await project.hasNot('is-positive')
|
||||
})
|
||||
|
||||
test.skip('readPackage hook in monorepo doesn\'t modify manifest', async (t) => {
|
||||
test('readPackage hook in monorepo doesn\'t modify manifest', async (t) => {
|
||||
const projects = preparePackages(t, [
|
||||
{
|
||||
name: 'project-a',
|
||||
@@ -53,8 +56,10 @@ test.skip('readPackage hook in monorepo doesn\'t modify manifest', async (t) =>
|
||||
const pnpmfile = `
|
||||
module.exports = { hooks: { readPackage } }
|
||||
function readPackage (pkg) {
|
||||
pkg.dependencies = pkg.dependencies || {}
|
||||
pkg.dependencies['dep-of-pkg-with-1-dep'] = '100.1.0'
|
||||
if (pkg.name === 'project-a') {
|
||||
pkg.dependencies = pkg.dependencies || {}
|
||||
pkg.dependencies['dep-of-pkg-with-1-dep'] = '100.1.0'
|
||||
}
|
||||
return pkg
|
||||
}
|
||||
`
|
||||
|
||||
@@ -574,11 +574,11 @@ async function installInContext (
|
||||
projects
|
||||
.map(async (project) => {
|
||||
if (project.mutation !== 'uninstallSome') return
|
||||
const field = project.originalManifest ? 'originalManifest' : 'manifest'
|
||||
project[field] = await removeDeps(project[field] as ProjectManifest, project.dependencyNames, {
|
||||
prefix: project.rootDir,
|
||||
saveType: project.targetDependenciesField,
|
||||
})
|
||||
const _removeDeps = (manifest: ProjectManifest) => removeDeps(manifest, project.dependencyNames, { prefix: project.rootDir, saveType: project.targetDependenciesField })
|
||||
project.manifest = await _removeDeps(project.manifest)
|
||||
if (project.originalManifest) {
|
||||
project.originalManifest = await _removeDeps(project.originalManifest)
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user