guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/06: gnu: node: Add an npmrc file to set nodedir.


From: guix-commits
Subject: 04/06: gnu: node: Add an npmrc file to set nodedir.
Date: Fri, 24 Dec 2021 05:44:19 -0500 (EST)

lilyp pushed a commit to branch master
in repository guix.

commit 71adecd51a034a1efcd6e57ab3b63acece6c43a6
Author: Philip McGrath <philip@philipmcgrath.com>
AuthorDate: Thu Dec 16 21:02:44 2021 -0500

    gnu: node: Add an npmrc file to set nodedir.
    
    * gnu/packages/node.scm (node, node-lts)[arguments]: Add a phase
    'install-npmrc to create a "built-in" npmrc file that configures
    "nodedir" to point to the output store path.
    (libnode)[arguments]: Delete the 'install-npmrc phase.
    
    Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
---
 gnu/packages/node.scm | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 3bd98c7..51a393c 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -261,7 +261,24 @@
                 (find-files (search-input-directory outputs "lib/node_modules")
                             (lambda (file stat)
                               (executable-file? file))
-                            #:stat lstat))))))))
+                            #:stat lstat)))))
+         (add-after 'install 'install-npmrc
+           ;; Note: programs like node-gyp only receive these values if
+           ;; they are started via `npm` or `npx`.
+           ;; See: https://github.com/nodejs/node-gyp#npm-configuration
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (with-output-to-file
+                   ;; Use the config file "primarily for distribution
+                   ;; maintainers" rather than "{prefix}/etc/npmrc",
+                   ;; especially because node-build-system uses --prefix
+                   ;; to install things to their store paths:
+                   (string-append out "/lib/node_modules/npm/npmrc")
+                 (lambda ()
+                   ;; Tell npm (mostly node-gyp) where to find our
+                   ;; installed headers so it doesn't try to
+                   ;; download them from the internet:
+                   (format #t "nodedir=~a\n" out)))))))))
     (native-inputs
      `(;; Runtime dependencies for binaries used as a bootstrap.
        ("c-ares" ,c-ares)
@@ -822,4 +839,5 @@ source files.")
         `(cons* "--shared" "--without-npm" ,flags))
        ((#:phases phases '%standard-phases)
         `(modify-phases ,phases
+           (delete 'install-npmrc)
            (delete 'patch-nested-shebangs)))))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]