Skip to content

Commit 235d698

Browse files
committed
Remove optional dep from prod in reify
- If optional dep installs, remove from prod array in lockfile - If optional dep fails install, keep in prod array in lockfile
1 parent fefd509 commit 235d698

File tree

1 file changed

+12
-1
lines changed
  • workspaces/arborist/lib/arborist

1 file changed

+12
-1
lines changed

workspaces/arborist/lib/arborist/reify.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1295,7 +1295,8 @@ module.exports = cls => class Reifier extends cls {
12951295

12961296
const updatedTrees = new Set()
12971297
const updateNodes = nodes => {
1298-
for (const { name, tree: addTree } of nodes) {
1298+
for (const node of nodes) {
1299+
const { name, tree: addTree } = node
12991300
// addTree either the root, or a workspace
13001301
const edge = addTree.edgesOut.get(name)
13011302
const pkg = addTree.package
@@ -1371,15 +1372,25 @@ module.exports = cls => class Reifier extends cls {
13711372
newSpec = req.saveSpec
13721373
}
13731374

1375+
// delete optional dep from prod if installation doesn't fail
1376+
const shouldDeleteFromProd = pkg.optionalDependencies && pkg.optionalDependencies[name] && pkg.dependencies
1377+
&& !this[_trashList].has(addTree.children.get(name).path)
1378+
13741379
if (options.saveType) {
13751380
const depType = saveTypeMap.get(options.saveType)
13761381
pkg[depType][name] = newSpec
13771382
// rpj will have moved it here if it was in both
13781383
// if it is empty it will be deleted later
13791384
if (options.saveType === 'prod' && pkg.optionalDependencies) {
13801385
delete pkg.optionalDependencies[name]
1386+
} else if (options.saveType === 'optional' && shouldDeleteFromProd) {
1387+
delete pkg.dependencies[name]
13811388
}
13821389
} else {
1390+
if (shouldDeleteFromProd) {
1391+
delete pkg.dependencies[name]
1392+
}
1393+
13831394
if (hasSubKey(pkg, 'dependencies', name)) {
13841395
pkg.dependencies[name] = newSpec
13851396
}

0 commit comments

Comments
 (0)