Add post build command and exclude the esbuild outdir in the watcher.

This commit is contained in:
trading_peter 2024-07-04 10:56:41 +02:00
parent c356f34e21
commit 30f8be3d5d
4 changed files with 34 additions and 7 deletions

View File

@ -1,7 +1,9 @@
package main
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"github.com/evanw/esbuild/pkg/api"
@ -34,6 +36,19 @@ func buildAction(ctx *cli.Context) error {
api.Build(o.ESBuild.BuildOptions)
replace(o)
if ctx.Bool("p") && o.ProductionBuildOptions.CmdPostBuild != "" {
fmt.Printf("Executing post production build command `%s`\n", o.ProductionBuildOptions.CmdPostBuild)
cmd := exec.Command("sh", "-c", o.ProductionBuildOptions.CmdPostBuild)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
fmt.Printf("Failed to execute post production build command `%s`: %+v\n", o.ProductionBuildOptions.CmdPostBuild, err)
os.Exit(1)
}
}
}
return nil

View File

@ -28,7 +28,7 @@ type ESBuildExtended struct {
type options struct {
ESBuild ESBuildExtended
Watch struct {
Path string
Paths []string
Exclude []string
}
Serve struct {
@ -52,6 +52,9 @@ type options struct {
From string
To string
}
ProductionBuildOptions struct {
CmdPostBuild string
}
}
func readCfg(cfgPath string) []options {
@ -89,7 +92,7 @@ func main() {
app := &cli.App{
Name: "gowebbuild",
Usage: "All in one tool to build web frontend projects.",
Version: "4.3.1",
Version: "4.4.0",
Authors: []*cli.Author{{
Name: "trading-peter (https://github.com/trading-peter)",
}},

View File

@ -1,6 +1,6 @@
{
"Watch": {
"Path": "./frontend/src",
"Paths": [ "./frontend/src" ],
"Exclude": [ "./dist" ]
},
"Copy": [
@ -45,5 +45,8 @@
"Bundle": true,
"Write": true,
"LogLevel": 3
},
"ProductionBuildOptions": {
"CmdPostBuild": "my-build-script.sh"
}
}

View File

@ -38,9 +38,15 @@ func watchAction(ctx *cli.Context) error {
w.Ignore(opts.Watch.Exclude...)
}
if err := w.AddRecursive(opts.Watch.Path); err != nil {
fmt.Println(err.Error())
os.Exit(1)
if opts.ESBuild.Outdir != "" {
w.Ignore(opts.ESBuild.Outdir)
}
for _, p := range opts.Watch.Paths {
if err := w.AddRecursive(p); err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
}
go func() {
@ -60,7 +66,7 @@ func watchAction(ctx *cli.Context) error {
}
}()
fmt.Printf("Watching %d elements in %s\n", len(w.WatchedFiles()), opts.Watch.Path)
fmt.Printf("Watching %d elements in %s\n", len(w.WatchedFiles()), opts.Watch.Paths)
purge(opts)
cp(opts)