[bug#78183,1/1] gnu: node-esbuild: Replace esbuild-node with node-esbuild.
Commit Message
Updated the change a bit, removed unneeded (arguments #modules ...):
This change replaces the esbuild-node package with one named node-esbuild:
- node-esbuild conforms to the name of node packages.
- Uses (guix build-system node) instead of (guix build-system go) which is more
appropriate because this is a node package.
- Uses esbuild as an input to use its binary so that it isn't rebuilt.
- Does not include the go-lang source by default.
- Does not include the lib/node_modules/esbuild/bin/esbuild shim javascript
file, but instead uses the actual binary. The shim file is supposed to be
replaced as part of the node module build process.
Here is the structure of node-esbuild:
├── bin
│ └── esbuild -> ../lib/node_modules/esbuild/bin/esbuild
├── etc
│ └── ld.so.cache
├── lib
│ └── node_modules
│ └── esbuild
│ ├── bin
│ │ └── esbuild <- Actual binary
│ ├── lib
│ │ ├── main.d.ts
│ │ └── main.js
│ ├── LICENSE.md
│ ├── package.json
│ └── README.md
└── share
└── doc
└── node-esbuild-0.24.0
└── LICENSE.md
Structure of esbuild-node
├── bin
│ └── esbuild <- Actual binary
├── etc
│ └── ld.so.cache
├── lib
│ └── node_modules
│ └── esbuild
│ ├── bin
│ │ └── esbuild <- Javascript file which tries to run /bin/esbuild
│ ├── install.js
│ ├── lib
│ │ ├── main.d.ts
│ │ └── main.js
│ ├── package.json
│ └── README.md
├── share
│ └── doc
│ └── esbuild-node-0.14.0
│ └── LICENSE.md
└── src
└── github.com
└── evanw
└── esbuild
└── cmd
└── esbuild
├── main.go
├── main_other.go
├── main_wasm.go
├── service.go
├── stdio_protocol.go
└── version.go
Structure of the NPM package:
├── bin
│ └── esbuild <- Actual binary
├── install.js
├── lib
│ ├── main.d.ts
│ └── main.js
├── LICENSE.md
├── package.json
└── README.md
Change-Id: I344cffe77f7065813284ccc434a3508650ba941d
Signed-off-by: Daniel Khodabakhsh <d@niel.khodabakh.sh>
---
gnu/packages/cran.scm | 3 +-
gnu/packages/web.scm | 88 ++++++++++++++++++-------------------------
2 files changed, 39 insertions(+), 52 deletions(-)
base-commit: a6b40f7a2f2db3107319d1a5e099b269a462a723
@@ -40,6 +40,7 @@
;;; Copyright © 2024 Marco Baggio <guix@mawumag.com>
;;; Copyright © 2024, 2025 Spencer King <spencer.king@geneoscopy.com>
;;; Copyright © 2024 Tor-björn Claesson <tclaesson@gmail.com>
+;;; Copyright © 2025 Daniel Khodabakhsh <d@niel.khodabakh.sh>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -6368,7 +6369,7 @@ (define-public r-waiter
"inst/assets/garcon/garcon.min.js"))))))
(propagated-inputs (list r-htmltools r-r6 r-shiny))
(native-inputs
- (list esbuild-node node-lts r-knitr
+ (list node-esbuild node-lts r-knitr
(origin
(method git-fetch)
(uri (git-reference
@@ -70,6 +70,7 @@
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2024, 2025 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2025 Raven Hallsby <karl@hallsby.com>
+;;; Copyright © 2025 Daniel Khodabakhsh <d@niel.khodabakh.sh>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -104,6 +105,7 @@ (define-module (gnu packages web)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system meson)
+ #:use-module (guix build-system node)
#:use-module (guix build-system perl)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
@@ -2187,57 +2189,41 @@ (define-public websockify
directions.")
(license license:lgpl3)))
-;; This is a variant of esbuild that builds and installs the nodejs API.
-;; Eventually, this should probably be merged with the esbuild package.
-(define-public esbuild-node
- (package
- (inherit esbuild)
- (name "esbuild-node")
- (version "0.14.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/evanw/esbuild")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "09r1xy0kk6c9cpz6q0mxr4why373pwxbm439z2ihq3k1d5kk7x4w"))
- (modules '((guix build utils)))
- (snippet
- ;; Remove prebuilt binaries
- '(delete-file-recursively "lib/npm/exit0"))))
- (arguments
- (list
- #:import-path "github.com/evanw/esbuild/cmd/esbuild"
- #:unpack-path "github.com/evanw/esbuild"
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'build 'build-platform
- (lambda* (#:key unpack-path #:allow-other-keys)
- (with-directory-excursion (string-append "src/" unpack-path)
- ;; Must be writable.
- (for-each make-file-writable (find-files "." "."))
- (invoke "node" "scripts/esbuild.js"
- (string-append #$output "/bin/esbuild"))
- (let ((modules (string-append #$output "/lib/node_modules/esbuild")))
- (mkdir-p modules)
- (copy-recursively "npm/esbuild" modules)))))
- (replace 'check
- (lambda* (#:key tests? unpack-path #:allow-other-keys)
- (when tests?
- ;; The "Go Race Detector" is only supported on 64-bit
- ;; platforms, this variable disables it.
- ;; TODO: Causes too many rebuilds, rewrite to limit to x86_64,
- ;; aarch64 and ppc64le.
- #$(if (target-riscv64?)
- `(setenv "ESBUILD_RACE" "")
- #~(unless #$(target-64bit?)
- (setenv "ESBUILD_RACE" "")))
- (with-directory-excursion (string-append "src/" unpack-path)
- (invoke "make" "test-go"))))))))
- (native-inputs
- (list go-github-com-kylelemons-godebug node-lts))))
+(define-public node-esbuild
+ (package
+ (name "node-esbuild")
+ (version (package-version esbuild))
+ (source
+ (origin
+ (inherit (package-source esbuild))
+ (file-name (git-file-name name version))
+ (snippet #f)
+ (modules '())))
+ (build-system node-build-system)
+ (inputs (list esbuild))
+ (arguments `(
+ #:tests? #f
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'chdir (lambda _
+ (chdir "npm/esbuild")))
+ (replace 'build (lambda* (#:key inputs #:allow-other-keys)
+ (let
+ ((esbuild-bin
+ (string-append (assoc-ref inputs "esbuild") "/bin/esbuild")))
+ (invoke
+ "node"
+ "../../scripts/esbuild.js"
+ esbuild-bin
+ "--neutral")
+ (modify-json
+ (delete-fields '("optionalDependencies", "scripts")))
+ (delete-file "install.js")
+ (delete-file "package-lock.json")
+ (copy-file esbuild-bin "bin/esbuild")))))))
+ (home-page (package-home-page esbuild))
+ (synopsis "Node module of ESBuild")
+ (description (package-description esbuild))
+ (license (package-license esbuild))))
(define-public wwwoffle
(package