mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
build-system/minify: Use esbuild.
* guix/build-system/minify.scm (default-uglify-js): Replace this procedure... (default-esbuild): ...with this new procedure. (lower): Use it, and add "esbuild" to build inputs. * guix/build/minify-build-system.scm (minify): Invoke esbuild instead of setting up a pipe to uglifyjs. * gnu/packages/cran.scm (r-shiny)[native-inputs]: Replace node-uglify-js with esbuild. * gnu/packages/statistics.scm (r-dt)[native-inputs]: Same.
This commit is contained in:
parent
b19dfb9d3a
commit
9d4339afb1
4 changed files with 12 additions and 18 deletions
|
@ -4591,7 +4591,7 @@ (define-public r-shiny
|
|||
(inputs
|
||||
(list js-datatables js-selectize js-strftime js-highlight))
|
||||
(native-inputs
|
||||
`(("uglifyjs" ,node-uglify-js)
|
||||
`(("esbuild" ,esbuild)
|
||||
("gfortran" ,gfortran)
|
||||
("js-bootstrap-accessibility"
|
||||
,(origin
|
||||
|
|
|
@ -4069,7 +4069,7 @@ (define-public r-dt
|
|||
(list js-selectize))
|
||||
(native-inputs
|
||||
`(("r-knitr" ,r-knitr)
|
||||
("uglifyjs" ,node-uglify-js)
|
||||
("esbuild" ,esbuild)
|
||||
("datatables-plugins"
|
||||
,(let ((version "1.13.4"))
|
||||
(origin
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017, 2018, 2023 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -41,15 +41,15 @@ (define %minify-build-system-modules
|
|||
`((guix build minify-build-system)
|
||||
,@%gnu-build-system-modules))
|
||||
|
||||
(define (default-uglify-js)
|
||||
(define (default-esbuild)
|
||||
"Return the default package to minify JavaScript source files."
|
||||
;; Lazily resolve the binding to avoid a circular dependency.
|
||||
(let ((mod (resolve-interface '(gnu packages uglifyjs))))
|
||||
(module-ref mod 'uglifyjs)))
|
||||
(let ((mod (resolve-interface '(gnu packages web))))
|
||||
(module-ref mod 'esbuild)))
|
||||
|
||||
(define* (lower name
|
||||
#:key source inputs native-inputs outputs system
|
||||
(uglify-js (default-uglify-js))
|
||||
(esbuild (default-esbuild))
|
||||
#:allow-other-keys
|
||||
#:rest arguments)
|
||||
"Return a bag for NAME."
|
||||
|
@ -64,7 +64,7 @@ (define private-keywords
|
|||
'())
|
||||
,@inputs
|
||||
,@(standard-packages)))
|
||||
(build-inputs `(("uglify-js" ,uglify-js)
|
||||
(build-inputs `(("esbuild" ,esbuild)
|
||||
,@native-inputs))
|
||||
(outputs outputs)
|
||||
(build minify-build)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2016, 2023 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -24,7 +24,6 @@ (define-module (guix build minify-build-system)
|
|||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 popen)
|
||||
#:export (%standard-phases
|
||||
minify-build
|
||||
minify))
|
||||
|
@ -39,14 +38,9 @@ (define-module (guix build minify-build-system)
|
|||
(define* (minify file #:key target (directory ""))
|
||||
(format #t "minifying ~a\n" file)
|
||||
(let* ((base (basename file ".js"))
|
||||
(installed (or target (string-append directory base ".min.js")))
|
||||
(minified (open-pipe* OPEN_READ "uglifyjs" file)))
|
||||
(call-with-output-file installed
|
||||
(cut dump-port minified <>))
|
||||
(match (close-pipe minified)
|
||||
(0 #t)
|
||||
(status
|
||||
(error "uglify-js failed" status)))))
|
||||
(installed (or target (string-append directory base ".min.js"))))
|
||||
(invoke "esbuild" file "--minify"
|
||||
(string-append "--outfile=" installed))))
|
||||
|
||||
(define* (build #:key javascript-files
|
||||
#:allow-other-keys)
|
||||
|
|
Loading…
Reference in a new issue