mirror of
https://github.com/ilyakooo0/ghcjs-optimizer.git
synced 2024-11-22 09:59:30 +03:00
First release
This commit is contained in:
parent
c3878fb782
commit
afcb48e7e2
15
Readme.md
Normal file
15
Readme.md
Normal file
@ -0,0 +1,15 @@
|
||||
# GHCJS-optimizer
|
||||
|
||||
This is a simple nix wrapper that optimizes the js with [Google Closure Compiler](https://github.com/google/closure-compiler) and compresses text files with [zopfli](https://github.com/google/zopfli).
|
||||
|
||||
This is very simple and intended for a pretty narrow use case: it is intended for use with [haskell.nix](https://github.com/input-output-hk/haskell.nix) (but will probably work with other nix builders). It also only uses the `all.js` file, since it allows more room for optimization, and having one file in most cases will be better than loading multiple. This means that the default `index.html` generated by the stock builder will not work. I replace `index.html` with one that only uses `all.js`.
|
||||
|
||||
## Example
|
||||
|
||||
```nix
|
||||
let ghcjs-optimizer = import ../ghcjs-optimizer { pkgs = nixpkgs; };
|
||||
in ghcjs-optimizer hsPkgs.projectCross.ghcjs.hsPkgs.<your project>.components.exes.<your executable>;
|
||||
```
|
||||
|
||||
|
||||
I suggest you use [niv](https://github.com/nmattia/niv) for nix dependencies like this.
|
20
default.nix
Normal file
20
default.nix
Normal file
@ -0,0 +1,20 @@
|
||||
{ pkgs ? null
|
||||
, closurecompiler ? pkgs.closurecompiler
|
||||
, zopfli ? pkgs.zopfli
|
||||
, useZopfli ? true
|
||||
, preserveHTML ? false
|
||||
}:
|
||||
input:
|
||||
pkgs.runCommand "${input.name}-optimized"
|
||||
{ } ''
|
||||
shopt -s globstar
|
||||
mkdir $out
|
||||
|
||||
cp ${if preserveHTML then "${input}/bin/*/index.html" else ./index.html} $out/index.html
|
||||
|
||||
chmod +w -R $out
|
||||
|
||||
${closurecompiler}/bin/closure-compiler --compilation_level ADVANCED --jscomp_off=checkVars --warning_level QUIET --js ${input}/bin/*/all.js --externs ${input}/bin/*/all.js.externs --js_output_file $out/all.js
|
||||
|
||||
${ if useZopfli then "${zopfli}/bin/zopfli $out/**/*.{js,css,json,html}" else "" }
|
||||
''
|
12
index.html
Normal file
12
index.html
Normal file
@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</body>
|
||||
<script language="javascript" src="all.js"></script>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user