12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package server
- import (
- "embed"
- "io/fs"
- "net/http"
- "github.com/labstack/echo/v4"
- "github.com/labstack/echo/v4/middleware"
- "github.com/usememos/memos/common/util"
- )
- //go:embed dist
- var embeddedFiles embed.FS
- func getFileSystem(path string) http.FileSystem {
- fs, err := fs.Sub(embeddedFiles, path)
- if err != nil {
- panic(err)
- }
- return http.FS(fs)
- }
- func embedFrontend(e *echo.Echo) {
- // Use echo static middleware to serve the built dist folder
- // refer: https://github.com/labstack/echo/blob/master/middleware/static.go
- e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
- Skipper: defaultAPIRequestSkipper,
- HTML5: true,
- Filesystem: getFileSystem("dist"),
- }))
- assetsGroup := e.Group("assets")
- assetsGroup.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
- return func(c echo.Context) error {
- c.Response().Header().Set(echo.HeaderCacheControl, "max-age=31536000, immutable")
- return next(c)
- }
- })
- assetsGroup.Use(middleware.StaticWithConfig(middleware.StaticConfig{
- Skipper: defaultAPIRequestSkipper,
- HTML5: true,
- Filesystem: getFileSystem("dist/assets"),
- }))
- }
- func defaultAPIRequestSkipper(c echo.Context) bool {
- path := c.Request().URL.Path
- return util.HasPrefixes(path, "/api", "/memos.api.v2")
- }
|