summaryrefslogtreecommitdiff
path: root/guix/build/node-build-system.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/build/node-build-system.scm')
-rw-r--r--guix/build/node-build-system.scm30
1 files changed, 13 insertions, 17 deletions
diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-system.scm
index b52fbe847a..0cd05fc0e8 100644
--- a/guix/build/node-build-system.scm
+++ b/guix/build/node-build-system.scm
@@ -92,23 +92,19 @@ listed in 'dependencies-to-remove', a list of strings naming npm packages.
To prevent the deleted dependencies from being reintroduced, use this function
only after the 'patch-dependencies' phase."
- (lambda (pkg-meta)
- (fold
- (lambda (dependency-key pkg-meta)
- (alist-update
- pkg-meta
- dependency-key
- (lambda (dependencies)
- (remove
- (lambda (dependency)
- (member (car dependency) dependencies-to-remove))
- dependencies))))
- pkg-meta
- (list
- "devDependencies"
- "dependencies"
- "peerDependencies"
- "optionalDependencies"))))
+ (let ((predicate (lambda (dependency)
+ (member (car dependency) dependencies-to-remove)))
+ (dependency? (cut member <> (list "devDependencies"
+ "dependencies"
+ "peerDependencies"
+ "optionalDependencies"))))
+ (lambda (pkg-meta)
+ (map (match-lambda
+ (((? dependency? key) . dependencies)
+ (cons key (remove predicate dependencies)))
+ (otherwise
+ otherwise))
+ pkg-meta))))
(define* (modify-json-fields
fields