~ruther/guix-local

675d31a5dff6ca35a4a79cda95e7e850162e35f8 — Ricardo Wurmus 1 year, 10 months ago 9f9127e
gnu: Add esbuild-node.

* gnu/packages/web.scm (esbuild-node): New variable.

Change-Id: I5e1a353a13ef7b4018fcf4aef4832af25f3dabe2
1 files changed, 59 insertions(+), 0 deletions(-)

M gnu/packages/web.scm
M gnu/packages/web.scm => gnu/packages/web.scm +59 -0
@@ 2054,6 2054,65 @@ begins forwarding traffic between the client and the target in both
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 (package-version esbuild))
    (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)
                ;; We're using Node 10, which doesn't have this method.
                (substitute* "scripts/esbuild.js"
                  (("exports.buildNativeLib" m)
                   (string-append
                    "Object.fromEntries = entries => entries.reduce((result, entry) => (result[entry[0]] = entry[1], result), {});\n"
                    m)))
                ;; 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
     (modify-inputs (package-native-inputs esbuild)
       (append node)))))

(define-public wwwoffle
  (package
    (name "wwwoffle")