[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#51838] [PATCH v8 05/41] guix: node-build-system: Add 'delete-depend
From: |
Liliana Marie Prikler |
Subject: |
[bug#51838] [PATCH v8 05/41] guix: node-build-system: Add 'delete-dependencies' helper function. |
Date: |
Thu, 30 Dec 2021 02:38:43 -0500 |
Many node packages currently skip the configure phase, because they lack
both dependencies and a convenient way to build without all of them, e.g.
for the purposes of bootstrapping. This patch adds a big hammer to flatten
these nails.
* guix/build/node-build-system.scm (delete-dependencies): New variable.
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
---
guix/build/node-build-system.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-system.scm
index 49b3db34ad..75bded73af 100644
--- a/guix/build/node-build-system.scm
+++ b/guix/build/node-build-system.scm
@@ -25,11 +25,13 @@ (define-module (guix build node-build-system)
#:use-module (guix build utils)
#:use-module (guix build json)
#:use-module (ice-9 ftw)
+ #:use-module (ice-9 regex)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-71)
#:export (%standard-phases
with-atomic-json-file-replacement
+ delete-dependencies
node-build))
(define (with-atomic-json-file-replacement file proc)
@@ -184,6 +186,30 @@ (define resolve-dependencies
(@)))))
#t)
+(define (delete-dependencies unwanted)
+ "Rewrite package.json to remove UNWANTED dependencies. Unwanted dependencies
+can be specified as regular expressions to exclude a range of related
+dependencies, e.g. \"tap\" excludes all dependencies including \"tap\" in their
+name, but \"^tap$\" explicitly excludes \"tap\"."
+ (define delete-from-jsobject
+ (match-lambda
+ (('@ . alist)
+ (cons '@ (filter (match-lambda
+ ((k . v)
+ (not (any
+ (lambda (pattern)
+ (string-match pattern k))
+ unwanted))))
+ alist)))))
+
+ (with-atomic-json-file-replacement "package.json"
+ (lambda (pkg-meta)
+ (jsobject-update*
+ pkg-meta
+ `("peerDependencies" ,delete-from-jsobject (@))
+ `("devDependencies" ,delete-from-jsobject (@))
+ `("dependencies" ,delete-from-jsobject (@))))))
+
(define* (delete-lockfiles #:key inputs #:allow-other-keys)
"Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if they
exist."
--
2.34.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [bug#51838] [PATCH v8 05/41] guix: node-build-system: Add 'delete-dependencies' helper function.,
Liliana Marie Prikler <=