Skip to content

Commit a560d98

Browse files
committed
feat: build with no embedded front-end files
1 parent b090564 commit a560d98

File tree

10 files changed

+90
-34
lines changed

10 files changed

+90
-34
lines changed

.air.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ tmp_dir = "tmp"
77

88
[build]
99
# Just plain old shell command. You could use `make` as well.
10-
cmd = "CGO_ENABLED=1 go build -tags=jsoniter -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'\" -v -o ./tmp/main ."
10+
cmd = "CGO_ENABLED=1 go build -tags=jsoniter,unembed -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'\" -v -o ./tmp/main ."
1111
# Binary file yields from `cmd`.
1212
bin = "tmp/main"
1313
# Customize binary.

.idea/nginx-ui.iml

+9-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/app.go

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
//go:build !unembed
2+
13
package app
24

35
import (
@@ -6,3 +8,5 @@ import (
68

79
//go:embed i18n.json dist/* dist/*/* src/language/* src/language/*/*
810
var DistFS embed.FS
11+
12+
var VersionPath = "dist/version.json"

app/app_unembed.go

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//go:build unembed
2+
3+
package app
4+
5+
import "embed"
6+
7+
//go:embed i18n.json src/language/* src/language/*/* src/version.json
8+
var DistFS embed.FS
9+
10+
var VersionPath = "src/version.json"

internal/middleware/embed.go

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//go:build !unembed
2+
3+
package middleware
4+
5+
import (
6+
"io/fs"
7+
"net/http"
8+
"path"
9+
10+
"github.com/0xJacky/Nginx-UI/app"
11+
"github.com/gin-contrib/static"
12+
"github.com/uozi-tech/cosy/logger"
13+
)
14+
15+
func MustFs(dir string) (serverFileSystem static.ServeFileSystem) {
16+
17+
sub, err := fs.Sub(app.DistFS, path.Join("dist", dir))
18+
19+
if err != nil {
20+
logger.Error(err)
21+
return
22+
}
23+
24+
serverFileSystem = ServerFileSystemType{
25+
http.FS(sub),
26+
}
27+
28+
return
29+
}

internal/middleware/middleware.go

+4-22
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@ package middleware
22

33
import (
44
"encoding/base64"
5-
"github.com/0xJacky/Nginx-UI/app"
5+
"net/http"
6+
"path"
7+
"strings"
8+
69
"github.com/0xJacky/Nginx-UI/internal/user"
710
"github.com/0xJacky/Nginx-UI/settings"
8-
"github.com/gin-contrib/static"
911
"github.com/gin-gonic/gin"
1012
"github.com/uozi-tech/cosy/logger"
11-
"io/fs"
12-
"net/http"
13-
"path"
14-
"strings"
1513
)
1614

1715
func AuthRequired() gin.HandlerFunc {
@@ -72,22 +70,6 @@ func (f ServerFileSystemType) Exists(prefix string, _path string) bool {
7270
return err == nil
7371
}
7472

75-
func MustFs(dir string) (serverFileSystem static.ServeFileSystem) {
76-
77-
sub, err := fs.Sub(app.DistFS, path.Join("dist", dir))
78-
79-
if err != nil {
80-
logger.Error(err)
81-
return
82-
}
83-
84-
serverFileSystem = ServerFileSystemType{
85-
http.FS(sub),
86-
}
87-
88-
return
89-
}
90-
9173
func CacheJs() gin.HandlerFunc {
9274
return func(c *gin.Context) {
9375
if strings.Contains(c.Request.URL.String(), "js") {

internal/upgrader/info.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package upgrader
22

33
import (
44
"encoding/json"
5-
"github.com/0xJacky/Nginx-UI/app"
6-
"github.com/pkg/errors"
75
"os"
86
"path/filepath"
97
"runtime"
8+
9+
"github.com/0xJacky/Nginx-UI/app"
10+
"github.com/pkg/errors"
1011
)
1112

1213
type RuntimeInfo struct {
@@ -43,7 +44,7 @@ func GetRuntimeInfo() (r RuntimeInfo, err error) {
4344
}
4445

4546
func GetCurrentVersion() (c CurVersion, err error) {
46-
verJson, err := app.DistFS.ReadFile("dist/version.json")
47+
verJson, err := app.DistFS.ReadFile(app.VersionPath)
4748
if err != nil {
4849
err = errors.Wrap(err, "service.GetCurrentVersion ReadFile err")
4950
return

router/routers.go

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package router
22

33
import (
4+
"net/http"
5+
46
"github.com/0xJacky/Nginx-UI/api/analytic"
57
"github.com/0xJacky/Nginx-UI/api/certificate"
68
"github.com/0xJacky/Nginx-UI/api/cluster"
@@ -19,19 +21,14 @@ import (
1921
"github.com/0xJacky/Nginx-UI/api/upstream"
2022
"github.com/0xJacky/Nginx-UI/api/user"
2123
"github.com/0xJacky/Nginx-UI/internal/middleware"
22-
"github.com/gin-contrib/static"
2324
"github.com/gin-gonic/gin"
2425
"github.com/uozi-tech/cosy"
25-
"net/http"
2626
)
2727

2828
func InitRouter() {
2929
r := cosy.GetEngine()
30-
r.Use(
31-
middleware.CacheJs(),
32-
middleware.IPWhiteList(),
33-
static.Serve("/", middleware.MustFs("")),
34-
)
30+
31+
initEmbedRoute(r)
3532

3633
r.NoRoute(func(c *gin.Context) {
3734
c.JSON(http.StatusNotFound, gin.H{

router/routers_embed.go

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//go:build !unembed
2+
3+
package router
4+
5+
import (
6+
"github.com/0xJacky/Nginx-UI/internal/middleware"
7+
"github.com/gin-contrib/static"
8+
"github.com/gin-gonic/gin"
9+
)
10+
11+
func initEmbedRoute(r *gin.Engine) {
12+
r.Use(
13+
middleware.CacheJs(),
14+
middleware.IPWhiteList(),
15+
static.Serve("/", middleware.MustFs("")),
16+
)
17+
}

router/routers_unembed.go

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//go:build unembed
2+
3+
package router
4+
5+
import "github.com/gin-gonic/gin"
6+
7+
func initEmbedRoute(r *gin.Engine) {
8+
}

0 commit comments

Comments
 (0)