|
|
@@ -216,10 +216,41 @@ func buildWasm(dev bool) ([]byte, error) {
|
|
|
if err != nil {
|
|
|
return nil, fmt.Errorf("Cannot build main.wasm: %w", err)
|
|
|
}
|
|
|
- log.Printf("Built wasm in %v\n", time.Since(start))
|
|
|
+ log.Printf("Built wasm in %v\n", time.Since(start).Round(time.Millisecond))
|
|
|
+
|
|
|
+ if !dev {
|
|
|
+ err := runWasmOpt(outputPath)
|
|
|
+ if err != nil {
|
|
|
+ return nil, fmt.Errorf("Cannot run wasm-opt: %w", err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return os.ReadFile(outputPath)
|
|
|
}
|
|
|
|
|
|
+func runWasmOpt(path string) error {
|
|
|
+ start := time.Now()
|
|
|
+ stat, err := os.Stat(path)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("Cannot stat %v: %w", path, err)
|
|
|
+ }
|
|
|
+ startSize := stat.Size()
|
|
|
+ cmd := exec.Command("../../tool/wasm-opt", "-Oz", path, "-o", path)
|
|
|
+ cmd.Stdout = os.Stdout
|
|
|
+ cmd.Stderr = os.Stderr
|
|
|
+ err = cmd.Run()
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("Cannot run wasm-opt: %w", err)
|
|
|
+ }
|
|
|
+ stat, err = os.Stat(path)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("Cannot stat %v: %w", path, err)
|
|
|
+ }
|
|
|
+ endSize := stat.Size()
|
|
|
+ log.Printf("Ran wasm-opt in %v, size dropped by %dK\n", time.Since(start).Round(time.Millisecond), (startSize-endSize)/1024)
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
// installJSDeps installs the JavaScript dependencies specified by package.json
|
|
|
func installJSDeps() error {
|
|
|
log.Printf("Installing JS deps...\n")
|
|
|
@@ -256,7 +287,7 @@ func setupEsbuildTailwind(build esbuild.PluginBuild, dev bool) {
|
|
|
}
|
|
|
cmd := exec.Command(*yarnPath, yarnArgs...)
|
|
|
tailwindOutput, err := cmd.Output()
|
|
|
- log.Printf("Ran tailwind in %v\n", time.Since(start))
|
|
|
+ log.Printf("Ran tailwind in %v\n", time.Since(start).Round(time.Millisecond))
|
|
|
if err != nil {
|
|
|
if exitErr, ok := err.(*exec.ExitError); ok {
|
|
|
log.Printf("Tailwind stderr: %s", exitErr.Stderr)
|